Один из способов сделать это, чтобы использовать объект менеджера, который предоставляет методы для установки значения элемента управления. Вы помещаете объект-менеджер в контекст Eclipse, чтобы его можно было вводить в любой класс (при условии, что класс создается системой впрыска).
Вы можете создать класс менеджера в контексте Eclipse, несколько способов, один только, чтобы объявить:
@Creatable
@Singleton
public class MyMananger
, который заставит систему впрыска, чтобы создать один экземпляр класса, используемый везде он вводится. Вы также можете использовать службу OSGi, ContextFunction
или напрямую установить объект в IEclipseContext
(возможно, в классе LifeCycle).
Ваш код управления инструментом может ввести менеджера и сообщить ему об элементе управления, который он должен обновить.
Другой код, желающий обновить элемент управления, может ввести менеджер и вызвать методы для установки значения элемента управления.
Как я уже упоминал, только код, созданный системой впрыска, может использовать @Inject. Если вы создаете класс, используя new
, вы не используете систему впрыска. Вместо этого используйте метод ContextInjectionFactory.make
.
Вот очень простой «строка состояния» код заимствована из кода я использую:
Руководитель:
@Creatable
@Singleton
public final class StatusLineManager
{
/** Label control to show the status */
private Label _label;
public StatusLineManager()
{
}
void setLabel(Label label)
{
_label = label;
}
public void setText(String text)
{
if (_label != null && !_label.isDisposed())
_label.setText(text);
}
}
Строка состояния управления Инструмент:
public class StatusLineControl
{
public StatusLineControl()
{
}
@PostConstruct
public void postConstruct(Composite parent, StatusLineManager manager)
{
Composite body = new Composite(parent, SWT.NONE);
body.setLayout(GridLayoutFactory.fillDefaults().extendedMargins(10, 0, 4, 0).create());
Label label = new Label(body, SWT.NONE);
label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
// Tell the manager about the label
manager.setLabel(label);
}
}
Извините, но я дон Не понимаю, что вы просите. Дайте нам пример того, что вы пытаетесь сделать. –
У нас есть метка, размещенная на панели состояния (в одном из инструментов управления инструментом). Куколка метки должна визуально отображать состояние соединения (подключено, отключено). Нам нужно изменить эту метку из обычного класса контроллера. – JimmyD