Прижать модальное окно к правому краю браузера


(Murat Issenzhulov) #1

Здравствуйте,
Я открываю окно

topLevelWindow.openWindow("screen", WindowManager.OpenType.DIALOG);

и хочу чтобы открывшись оно было прижато к правому краю браузера

Пробовал играться с настройками модального окна в методе init():

getDialogOptions().setModal(false);
getDialogOptions().setHeight("100%");
getDialogOptions().setWidth("332");
getDialogOptions().setPositionX(0);
getDialogOptions().setPositionY(0);

Но, к сожалению, метод setPositionX() не подходит для этой задачи, так как текущая ширина окна браузера неизвестна (или я ошибаюсь?).
Установка класса стиля для модального окна тоже мало что дает, так как стиль садится в какой-то из внутренних html контейнеров модального окна. Поэтому я не могу изменить свойства css вышестоящих html контейнеров.
Теоретически, наверное есть вариант с использованием javaScript. Но тут моиx идей и познаний явно не достаточно для решения этой проблемы. Подскажите, пожалуйста, как можно реализовать данный функционал?

P.S. Раз уж тема о модальных окнах, еще один вопрос. Можно ли убрать возможность передвигать модальное окно?


(Murat Issenzhulov) #2

Решил это следующим образом:
добавил стиль

.position-right {
    right: 0px;
    left: unset !important;
  }

В контроллере модального окна, переопределил метод ready()

@Override
    public void ready() {
        super.ready();
        setStyleName("position-right-mark");
        Page.getCurrent().getJavaScript().execute("document.getElementsByClassName(\"position-right-mark\")[0].closest(\".v-window\").classList.add(\"position-right\"); ");
    }

P.S. Как убрать возможность передвижения окна пока не нашел.