2016-06-13 4 views
0

Я пытаюсь увеличить в моем приложении ФГОС с использованием Eclipse, 4. я уже успел получить функциональность масштабирования работает в среде Eclipse, 3 с помощью ZoomManager и действия:Увеличить Применение ГЭФ в Eclipse, 4 Environment

ZoomManager manager = rootEditPart.getZoomManager(); 
getActionRegistry().registerAction(new ZoomInAction(manager)); 
getActionRegistry().registerAction(new ZoomOutAction(manager)); 

Теперь я пытаюсь перенести свой проект в среду Eclipse 4. Насколько я знаю, действия были заменены командами в Eclipse 4. В моем приложении уже добавлена ​​команда ZoomIn и обработчик ZoomIn. И я также нашел пример использования ScalableFreeformLayeredPane.

private static ScalableFreeformLayeredPane root; 

@Inject 
@Optional 
private void subscribeTopicViewZoomIn(@UIEventTopic(Events.TOPIC_VIEW_ZOOMIN) Map<String, String> event) { 
    double curScale = root.getScale(); 

    if (curScale <= 2.9) 
     root.setScale(curScale + 0.1); 
} 

Моя проблема в том, что я понятия не имею, как получить это ScalableFreeformLayeredPane связано с моим ScrollingGraphicalViewer, который я использую, чтобы показать свою модель:

private static ScrollingGraphicalViewer viewer = new ScrollingGraphicalViewer(); 
private static Model model = new Model(); 

    @PostConstruct 
    public void postConstruct(Composite parent) { 

    viewer.createControl(parent); 

    viewer.setEditPartFactory(editPartFactory); 
    viewer.setEditDomain(new DefaultEditDomain(this)); 

    CreateModel(); 

    viewer.setContents(model); 

} 

Может кто-то мне помочь, пожалуйста, или привести пример ? Или может быть другой способ без использования ScalableFreeformLayeredPane?

Спасибо! Томас

ответ

0

я наконец нашел решение, которое работает для меня:

private ZoomManager manager; 

    @Override 
    protected void initializeGraphicalViewer() { 
     double[] zoomLevels; 
     ArrayList<String> zoomContributions; 

     ScalableRootEditPart rootEditPart = (ScalableRootEditPart) viewer.getRootEditPart(); 

     manager = rootEditPart.getZoomManager(); 

     zoomLevels = new double[] {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0, 5.0}; 
     manager.setZoomLevels(zoomLevels); 

     zoomContributions = new ArrayList<String>(); 

     manager.setZoomLevelContributions(zoomContributions); 
    } 

С помощью этой конфигурации можно использовать команды и события, чтобы получить доступ к ZoomManager:

@Inject 
@Optional 
private void subscribeTopicViewZoomIn(@UIEventTopic(Events.TOPIC_VIEW_ZOOMIN) Map<String, String> event) { 

    manager.setZoom(manager.getNextZoomLevel()); 
    updateZoomCombo(); 
} 
Смежные вопросы