Надлежащий способ связать группу переключателей с помощью привязки данных JFace

Как насчет этого?

Нужно, чтобы .popup работал как контейнер, поэтому он должен иметь границу, фон и тень вместо того, чтобы иметь те, что на .popup-inner.

То, как .popup центрируется, имеет верхний край элемента на 20% от верхней части окна, нижний край на 20% от нижней части окна, левый край и усиление; правый край 20% от левого & amp; правый край окна соответственно.

Сложив все это, вы получите 40% вертикального пространства и 40% горизонтального пространства, что обеспечит вам 60% ширины и высоты.

Как текст содержится в .popup здесь, с помощью overflow.

.popup overflow: hidden означает, что все, что находится за пределами .popup, всегда будет скрыто.

Хотя .popup-inner и overflow: auto включат прокрутку, когда содержимое превышает область элемента и если все содержимое находится внутри элемента, прокрутка не будет доступна.

$(function() {
  //----- OPEN
  $('[data-popup-open]').on('click', function(e) {
    var targeted_popup_class = jQuery(this).attr('data-popup-open');
    $('[data-popup="' + targeted_popup_class + '"]').fadeIn(350);

    e.preventDefault();
  });

  //----- CLOSE
  $('[data-popup-close]').on('click', function(e) {
    var targeted_popup_class = jQuery(this).attr('data-popup-close');
    $('[data-popup="' + targeted_popup_class + '"]').fadeOut(350);

    e.preventDefault();
  });
});
.popup {
  display: block;
  position: fixed;
  left: 20%;
  right: 20%;
  top: 20%;
  bottom: 20%;
  box-shadow:0px 2px 6px rgba(0,0,0,1);
  border-radius:3px;
  color: orange;
  border: 3px solid orange;
  border-radius: 10px;
  background: rgba(0, 0, 0, 0.8);
  font-size: 4vh;
  overflow: hidden;
}

.popup-inner {
  position: absolute;
  width: 96%;
  height: 96%;
  padding: 2%;
  overflow: auto;
}

.popup-close {
  color: white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
<div class="popup" data-popup="popup-1">
  <div class="popup-inner"> 
    <p>
      <table>
        <tr>
          <td>Title</td><td>Lorem ipsum dolor sit amet, ut vim clita iracundia, sit alia signiferumque at. Te paulo tempor option cum, vero posse iuvaret has ex, quo e</td><td>Date</td>
        </tr>	
        <tr>
          <td>Title</td><td>Lorem ipsum dolor sit amet, ut vim clita iracundia, sit alia signiferumque at. Te paulo tempor option cum, vero posse iuvaret has ex, quo e</td><td>Date</td>
        </tr>
        <tr>
          <td>Title</td><td>Lorem ipsum dolor sit amet, ut vim clita iracundia, sit alia signiferumque at. Te paulo tempor option cum, vero posse iuvaret has ex, quo e</td><td>Date</td>
        </tr>
      </table>
    </p>
    <!-- <p><a data-popup-close="popup-1" href="#">Close</a></p> -->
    <a class="popup-close" data-popup-close="popup-1" href="#">Close</a> 
  </div>
</div>

11
задан Sandman 16 March 2009 в 23:26
поделиться

2 ответа

Это кажется подобным привязке POJO к свойству.

Это означает, что Вы должны иметь один объект со своими двумя кнопками, реализовывая IObservable и затем связать его с Вашим свойством.
Как Вы упоминаете в комментариях, необходимо расширить AbstractObservable.

У Вас есть пример такого расширения здесь с этим классом Тест о заметном списке (не необходимый, в чем Вы нуждаетесь, но это может дать Вам, идеи об использовании Заметных когда дело доходит до обнаруживают изменение на уведомление),

7
ответ дан 3 December 2019 в 07:14
поделиться

Радиокнопки в одном и том же составном элементе будут действовать как группа, поэтому только одна кнопка будет иметь истинное значение, а все остальные должны иметь ложное значение. Наряду с этим фактом, что ObservationSelection на кнопке Yes должно быть достаточно, чтобы отразить выбранное значение yes или no на стороне свойства модели.

Другими словами, модифицированный конструктор будет выглядеть так.

public YesOrNoRadioButtonGroup(final Composite p_parent,
            final String p_questionText,
            final IObservableValue p_modelProperty,
            final DataBindingContext p_dbContext) 
{
    Composite radioButtonGroupContainer = new Composite(p_parent, SWT.NONE);
    radioButtonGroupContainer.setLayout(new GridLayout());
    Label question = new Label(radioButtonGroupContainer, SWT.NONE);
    question.setText(p_questionText);

    m_yesButton = new Button(radioButtonGroupContainer, SWT.RADIO);
    m_yesButton.setText(YES);
    m_noButton = new Button(radioButtonGroupContainer, SWT.RADIO);
    m_noButton.setText(NO);
    m_noButton.setSelection(true);
    p_dbContext.bindValue(SWTObservables.observeSelection(this.getYesButton()),
                p_modelProperty, null, null);   
}

Я попробовал это и обнаружил, что работает хорошо. Просто проверьте.

2
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: