Example usage for org.eclipse.jface.action StatusLineManager BEGIN_GROUP

List of usage examples for org.eclipse.jface.action StatusLineManager BEGIN_GROUP

Introduction

In this page you can find the example usage for org.eclipse.jface.action StatusLineManager BEGIN_GROUP.

Prototype

String BEGIN_GROUP

To view the source code for org.eclipse.jface.action StatusLineManager BEGIN_GROUP.

Click Source Link

Document

Identifier of group marker used to position contributions at the beginning of the status line.

Usage

From source file:com.minres.scviewer.e4.application.internal.status.WaveStatusBarControl.java

License:Open Source License

/**
 * Instantiates a new wave status bar control.
 *
 * @param sync the sync/* w w w  .ja  va  2s.com*/
 */
@Inject
public WaveStatusBarControl(UISynchronize sync) {
    super(sync);
    cursorContribution = new TextContributionItem("C:", 80);
    markerContribution = new TextContributionItem("M:", 80);
    markerDiffContribution = new TextContributionItem("C-M:", 80);
    zoomContribution = new TextContributionItem("Z:", 80);
    manager.appendToGroup(StatusLineManager.BEGIN_GROUP, cursorContribution);
    manager.appendToGroup(StatusLineManager.BEGIN_GROUP, markerContribution);
    manager.appendToGroup(StatusLineManager.BEGIN_GROUP, markerDiffContribution);
    manager.appendToGroup(StatusLineManager.BEGIN_GROUP, zoomContribution);
}

From source file:com.xored.glance.internal.ui.panels.SearchStatusLine.java

License:Open Source License

private void init() {
    item = new SearchItem();
    IStatusLineManager manager = getManager();
    if (manager != null) {
        manager.remove(item);//w  w w  .  ja  v  a 2  s.  c o m
        manager.appendToGroup(StatusLineManager.BEGIN_GROUP, item);
        manager.update(true);
    }
}

From source file:net.refractions.udig.project.ui.internal.MapEditor.java

License:Open Source License

/**
 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
 *///w ww.  j  ava 2 s  .  c  o  m
public void createPartControl(final Composite parent) {

    ShutdownTaskList.instance().addPreShutdownTask(shutdownTask);

    composite = new Composite(parent, SWT.NO_BACKGROUND);

    composite.setLayout(new FormLayout());
    composite.setFont(parent.getFont());
    setPartName(getMap().getName());

    setTitleToolTip(Messages.MapEditor_titleToolTip);
    setTitleImage(ProjectUIPlugin.getDefault().getImage(ISharedImages.MAP_OBJ));

    final IPreferenceStore preferenceStore = ProjectPlugin.getPlugin().getPreferenceStore();
    boolean istiled = preferenceStore
            .getBoolean(net.refractions.udig.project.preferences.PreferenceConstants.P_TILED_RENDERING);

    if (!istiled) {
        viewer = new MapViewer(composite, SWT.DOUBLE_BUFFERED);
    } else {
        viewer = new MapViewer(composite, SWT.MULTI | SWT.NO_BACKGROUND);
    }
    // allow the viewer to open our context menu; work with our selection proivder etc
    viewer.init(this);
    // if a map was provided as input we can ask the viewer to use it
    Map input = (Map) ((UDIGEditorInput) getEditorInput()).getProjectElement();
    if (input != null) {
        viewer.setMap(input);
    }

    FormData formdata = new FormData();
    formdata.top = new FormAttachment(0);
    formdata.bottom = new FormAttachment(100, -ScaleRatioLabel.STATUS_LINE_HEIGHT);
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    viewer.getViewport().getControl().setLayoutData(formdata);

    statusLineManager.add(new GroupMarker(StatusLineManager.BEGIN_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.MIDDLE_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.END_GROUP));
    statusLineManager.createControl(composite, SWT.BORDER);
    formdata = new FormData();
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    formdata.top = new FormAttachment(viewer.getViewport().getControl(), 0, SWT.BOTTOM);
    formdata.bottom = new FormAttachment(100);
    statusLineManager.getControl().setLayoutData(formdata);

    getSite().getPage().addPartListener(partlistener);
    registerFeatureFlasher();
    /*
    if (getMap().getRenderManager() == null){
    if (!istiled) {
        getMap().setRenderManagerInternal(new RenderManagerDynamic());
    } else {
        getMap().setRenderManagerInternal(new TiledRenderManagerDynamic());
    }
    }
            
    setRenderManager(getMap().getRenderManagerInternal());
    viewer.getViewport().setRenderManager(getRenderManager());
    getRenderManager().setMapDisplay(viewer.getViewport());
    */
    viewer.getViewport().addPaneListener(getMap().getViewportModelInternal());

    layerSelectionListener = new LayerSelectionListener(new LayerSelectionListener.Callback() {

        public void callback(List<Layer> layers) {
            if (composite.isDisposed()) {
                getSite().getPage().removePostSelectionListener(layerSelectionListener);
                return; // component.isVisible cannot be called on a disposed component
            } else if (!composite.isVisible())
                return;
            Layer layer = layers.get(0);
            // Second condition excludes unnecessary UI call
            if (layer.getMap() == getMap() && getMap().getEditManager().getSelectedLayer() != layer) {
                SelectLayerCommand selectLayerCommand = new SelectLayerCommand(layer);
                selectLayerCommand.setMap(getMap());
                try {
                    selectLayerCommand.run(ProgressManager.instance().get());
                } catch (Exception e) {
                    throw (RuntimeException) new RuntimeException().initCause(e);
                }
                getMap().sendCommandSync(new UndoRedoCommand(selectLayerCommand));
            }
        }

    });
    getSite().getPage().addPostSelectionListener(layerSelectionListener);

    for (Layer layer : getMap().getLayersInternal()) {
        layer.addListener(layerListener);
    }

    dropTarget = UDIGDragDropUtilities.addDropSupport(viewer.getViewport().getControl(), this);
    this.replaceableSelectionProvider = new ReplaceableSelectionProvider();
    getSite().setSelectionProvider(replaceableSelectionProvider);
    runMapOpeningInterceptor(getMap());
    mapEditorSite = new MapEditorSite(super.getSite(), this);
    updateCRS();
    updateScaleLabel();

    getMap().getViewportModel().addViewportModelListener(new IViewportModelListener() {

        public void changed(ViewportModelEvent event) {
            if (getMap() == null) {
                event.getSource().removeViewportModelListener(this);
                return;
            }
            if (event.getType() == EventType.CRS) {
                updateCRS();
            }
        }

    });

    setDirty(isMapDirty());
}

From source file:net.refractions.udig.project.ui.internal.MapEditorWithPalette.java

License:Open Source License

/**
 * Hijacked; supposed to create a GraphicalViewer on the specified <code>Composite</code>.
 * <p>/*from   w ww  .  j av  a 2 s .  com*/
 * Instead we steal the composite for our MapViewer.
 * 
 * @param parent
 *            the parent composite
 */
protected void createGraphicalViewer(Composite parent) {

    // GraphicalViewer viewer = new GraphicalViewerImpl();
    // viewer.createControl(parent);
    // setGraphicalViewer(viewer);
    // configureGraphicalViewer();
    // hookGraphicalViewer();
    // initializeGraphicalViewer();

    composite = new Composite(parent, SWT.NO_BACKGROUND);

    composite.setLayout(new FormLayout());
    composite.setFont(parent.getFont());
    setPartName(getMap().getName());

    setTitleToolTip(Messages.MapEditor_titleToolTip);
    setTitleImage(ProjectUIPlugin.getDefault().getImage(ISharedImages.MAP_OBJ));

    final IPreferenceStore preferenceStore = ProjectPlugin.getPlugin().getPreferenceStore();
    boolean istiled = preferenceStore
            .getBoolean(net.refractions.udig.project.preferences.PreferenceConstants.P_TILED_RENDERING);

    if (!istiled) {
        viewer = new MapViewer(composite, SWT.DOUBLE_BUFFERED);
    } else {
        viewer = new MapViewer(composite, SWT.MULTI | SWT.NO_BACKGROUND);
    }
    // we need an edit domain for GEF
    // This represents the "Current Tool" for the Palette
    // We should not duplicate the idea of current tools so we may
    // need to delegate to getEditDomain; and just use the MapEditTool *id*
    // editDomain = new MapEditDomain(this);
    // setEditDomain( editDomain );

    // allow the viewer to open our context menu; work with our selection proivder etc
    viewer.init(this);

    // if a map was provided as input we can ask the viewer to use it
    Map input = (Map) ((UDIGEditorInput) getEditorInput()).getProjectElement();
    if (input != null) {
        viewer.setMap(input);
    }

    FormData formdata = new FormData();
    formdata.top = new FormAttachment(0);
    formdata.bottom = new FormAttachment(100, -ScaleRatioLabel.STATUS_LINE_HEIGHT);
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    viewer.getViewport().getControl().setLayoutData(formdata);

    statusLineManager.add(new GroupMarker(StatusLineManager.BEGIN_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.MIDDLE_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.END_GROUP));
    statusLineManager.createControl(composite, SWT.BORDER);
    formdata = new FormData();
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    formdata.top = new FormAttachment(viewer.getViewport().getControl(), 0, SWT.BOTTOM);
    formdata.bottom = new FormAttachment(100);
    statusLineManager.getControl().setLayoutData(formdata);

    getSite().getPage().addPartListener(partlistener);
    registerFeatureFlasher();
    viewer.getViewport().addPaneListener(getMap().getViewportModelInternal());

    layerSelectionListener = new LayerSelectionListener(new LayerSelectionListener.Callback() {

        public void callback(List<Layer> layers) {
            if (composite.isDisposed()) {
                getSite().getPage().removePostSelectionListener(layerSelectionListener);
                return; // component.isVisible cannot be called on a disposed component
            } else if (!composite.isVisible())
                return;
            Layer layer = layers.get(0);
            // Second condition excludes unnecessary UI call
            if (layer.getMap() == getMap() && getMap().getEditManager().getSelectedLayer() != layer) {
                SelectLayerCommand selectLayerCommand = new SelectLayerCommand(layer);
                selectLayerCommand.setMap(getMap());
                try {
                    selectLayerCommand.run(ProgressManager.instance().get());
                } catch (Exception e) {
                    throw (RuntimeException) new RuntimeException().initCause(e);
                }
                getMap().sendCommandSync(new UndoRedoCommand(selectLayerCommand));
            }
        }

    });
    getSite().getPage().addPostSelectionListener(layerSelectionListener);

    for (Layer layer : getMap().getLayersInternal()) {
        layer.addListener(layerListener);
    }

    dropTarget = UDIGDragDropUtilities.addDropSupport(viewer.getViewport().getControl(), this);
    this.replaceableSelectionProvider = new ReplaceableSelectionProvider();
    getSite().setSelectionProvider(replaceableSelectionProvider);
    runMapOpeningInterceptor(getMap());
    mapEditorSite = new MapEditorSite(super.getSite(), this);
    updateCRS();
    updateScaleLabel();

    getMap().getViewportModel().addViewportModelListener(new IViewportModelListener() {

        public void changed(ViewportModelEvent event) {
            if (getMap() == null) {
                event.getSource().removeViewportModelListener(this);
                return;
            }
            if (event.getType() == EventType.CRS) {
                updateCRS();
            }
        }

    });

    setDirty(isMapDirty());
}

From source file:net.refractions.udig.project.ui.internal.tool.display.ToolManager.java

License:Open Source License

/**
 * This method goes through the steps of deactivating the current tool option contribution and 
 * activating the new tool option contribution.
 * //from   ww  w.  j  a  v a 2  s  .co m
 * @param statusLine
 * @param modalToolProxy
 */
private void initToolOptionsContribution(IStatusLineManager statusLine, ToolProxy modalToolProxy) {
    if (statusLine != null) {

        if (preferencesShortcutToolOptions == null || preferencesShortcutToolOptions.isDisposed()) {
            preferencesShortcutToolOptions = new PreferencesShortcutToolOptionsContributionItem();
            statusLine.appendToGroup(StatusLineManager.BEGIN_GROUP, preferencesShortcutToolOptions);
            preferencesShortcutToolOptions.setVisible(true);
        }
        preferencesShortcutToolOptions.update(modalToolProxy);

        //TODO, cache contributions instead of destroying them and recreating them

        //remove old tool contribution
        for (ContributionItem contribution : optionsContribution) {
            statusLine.remove(contribution.getId());
        }

        //get the new contributions
        optionsContribution = modalToolProxy.getOptionsContribution();

        //set all new contributions
        for (ContributionItem contribution : optionsContribution) {
            statusLine.appendToGroup(StatusLineManager.BEGIN_GROUP, contribution);
            contribution.setVisible(true);
        }

        statusLine.update(true);
    }
}

From source file:org.eclipse.pde.internal.ui.shared.target.TargetStatus.java

License:Open Source License

/**
 * Adds the target status contribution to the status line manager if the value of
 * preference {@link IPreferenceConstants#SHOW_TARGET_STATUS} is true.  Will not remove
 * an existing status contribution if the preference is false, to remove use
 * {@link #refreshTargetStatus()}.//  w w w . j  av a  2s . c  o  m
 * <p>
 * Does not have to be called from a UI thread.
 * </p>
 */
public static void initializeTargetStatus() {
    PDEPreferencesManager prefs = PDEPlugin.getDefault().getPreferenceManager();
    boolean showStatus = prefs.getBoolean(IPreferenceConstants.SHOW_TARGET_STATUS);

    if (showStatus) {
        UIJob updateStatus = new UIJob("Refresh PDE Target Status") { //$NON-NLS-1$
            @Override
            public IStatus runInUIThread(IProgressMonitor monitor) {
                IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
                for (int i = 0; i < windows.length; i++) {
                    IStatusLineManager slManager = getStatusLineManager(windows[i]);
                    if (slManager != null) {
                        slManager.appendToGroup(StatusLineManager.BEGIN_GROUP, getContributionItem());
                        slManager.update(false);
                        break;
                    }
                }
                return Status.OK_STATUS;
            }
        };
        updateStatus.setSystem(true);
        updateStatus.setPriority(Job.DECORATE);
        updateStatus.schedule();
    }
}

From source file:org.eclipse.pde.internal.ui.shared.target.TargetStatus.java

License:Open Source License

/**
 * Adds or removes the target status contribution from the status line manager depending on the
 * value of preference {@link IPreferenceConstants#SHOW_TARGET_STATUS}.
 * <p>/*from   www  .  j a v a2  s .c  o  m*/
 * Must be called from the UI Thread.
 * </p>
 */
public static void refreshTargetStatus() {
    PDEPreferencesManager prefs = PDEPlugin.getDefault().getPreferenceManager();
    boolean showStatus = prefs.getBoolean(IPreferenceConstants.SHOW_TARGET_STATUS);

    IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
    for (int i = 0; i < windows.length; i++) {
        IStatusLineManager manager = getStatusLineManager(windows[i]);
        if (manager != null) {
            if (showStatus) {
                manager.remove(TARGET_STATUS_ID);
                manager.appendToGroup(StatusLineManager.BEGIN_GROUP, getContributionItem());
            } else {
                manager.remove(TARGET_STATUS_ID);
            }
            manager.update(false);
            break;
        }
    }
}

From source file:org.elbe.relations.internal.controls.RelationsStatusLineManager.java

License:Open Source License

@PostConstruct
void afterInit(final Composite inParent, final IEclipseContext inContext, final IDataService inDataService) {
    dataService = inDataService;//from w  ww.  j av a 2s  .  com

    statusLineManager = new StatusLineManager();
    statusLineManager.createControl(inParent);

    statusLineManager.prependToGroup(StatusLineManager.BEGIN_GROUP, statusItemDBName);
    statusLineManager.insertAfter(Constants.STATUS_ITEM_DB_NAME, statusItemDBSize);

    setData();
    final IEclipseContext lContext = WizardHelper.getWorkbenchContext(inContext);
    lContext.set(IStatusLineManager.class, statusLineManager);
    lContext.set(RelationsStatusLineManager.class, this);
}

From source file:org.locationtech.udig.project.ui.internal.MapEditor.java

License:Open Source License

/**
 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
 *//*from w w  w.  j av a2 s.  c  om*/
public void createPartControl(final Composite parent) {

    ShutdownTaskList.instance().addPreShutdownTask(shutdownTask);

    composite = new Composite(parent, SWT.NO_BACKGROUND);

    composite.setLayout(new FormLayout());
    composite.setFont(parent.getFont());
    setPartName(getMap().getName());

    setTitleToolTip(Messages.MapEditor_titleToolTip);
    setTitleImage(ProjectUIPlugin.getDefault().getImage(ISharedImages.MAP_OBJ));

    final IPreferenceStore preferenceStore = ProjectPlugin.getPlugin().getPreferenceStore();
    boolean istiled = preferenceStore
            .getBoolean(org.locationtech.udig.project.preferences.PreferenceConstants.P_TILED_RENDERING);

    if (!istiled) {
        viewer = new MapViewer(composite, SWT.DOUBLE_BUFFERED);
    } else {
        viewer = new MapViewer(composite, SWT.MULTI | SWT.NO_BACKGROUND);
    }
    // allow the viewer to open our context menu; work with our selection proivder etc
    viewer.init(this);
    // if a map was provided as input we can ask the viewer to use it
    Map input = (Map) ((UDIGEditorInput) getEditorInput()).getProjectElement();
    if (input != null) {
        viewer.setMap(input);
    }

    FormData formdata = new FormData();
    formdata.top = new FormAttachment(0);
    formdata.bottom = new FormAttachment(100, -ScaleRatioLabel.STATUS_LINE_HEIGHT);
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    viewer.getViewport().getControl().setLayoutData(formdata);

    statusLineManager.add(new GroupMarker(StatusLineManager.BEGIN_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.MIDDLE_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.END_GROUP));
    statusLineManager.createControl(composite, SWT.BORDER);
    formdata = new FormData();
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    formdata.top = new FormAttachment(viewer.getViewport().getControl(), 0, SWT.BOTTOM);
    formdata.bottom = new FormAttachment(100);
    statusLineManager.getControl().setLayoutData(formdata);

    getSite().getPage().addPartListener(partlistener);
    registerFeatureFlasher();
    /*
    if (getMap().getRenderManager() == null){
    if (!istiled) {
        getMap().setRenderManagerInternal(new RenderManagerDynamic());
    } else {
        getMap().setRenderManagerInternal(new TiledRenderManagerDynamic());
    }
    }
            
    setRenderManager(getMap().getRenderManagerInternal());
    viewer.getViewport().setRenderManager(getRenderManager());
    getRenderManager().setMapDisplay(viewer.getViewport());
    */
    viewer.getViewport().addPaneListener(getMap().getViewportModelInternal());

    layerSelectionListener = new LayerSelectionListener(new LayerSelectionListener.Callback() {

        public void callback(List<Layer> layers) {
            if (composite.isDisposed()) {
                getSite().getPage().removePostSelectionListener(layerSelectionListener);
                return; // component.isVisible cannot be called on a disposed component
            } else if (!composite.isVisible())
                return;
            Layer layer = layers.get(0);
            // Second condition excludes unnecessary UI call
            if (layer.getMap() == getMap() && getMap().getEditManager().getSelectedLayer() != layer) {
                SelectLayerCommand selectLayerCommand = new SelectLayerCommand(layer);
                selectLayerCommand.setMap(getMap());
                try {
                    selectLayerCommand.run(ProgressManager.instance().get());
                } catch (Exception e) {
                    throw (RuntimeException) new RuntimeException().initCause(e);
                }
                getMap().sendCommandSync(new UndoRedoCommand(selectLayerCommand));
            }
        }

    });
    getSite().getPage().addPostSelectionListener(layerSelectionListener);

    for (Layer layer : getMap().getLayersInternal()) {
        layer.addListener(layerListener);
    }

    dropTarget = UDIGDragDropUtilities.addDropSupport(viewer.getViewport().getControl(), this);
    this.replaceableSelectionProvider = new ReplaceableSelectionProvider();
    getSite().setSelectionProvider(replaceableSelectionProvider);
    runMapOpeningInterceptor(getMap());
    mapEditorSite = new MapEditorSite(super.getSite(), this);
    updateCRS();
    updateScaleLabel();

    getMap().getViewportModel().addViewportModelListener(new IViewportModelListener() {

        public void changed(ViewportModelEvent event) {
            if (getMap() == null) {
                event.getSource().removeViewportModelListener(this);
                return;
            }
            if (event.getType() == EventType.CRS) {
                updateCRS();
            }
        }

    });

    setDirty(isMapDirty());
}

From source file:org.locationtech.udig.project.ui.internal.MapEditorWithPalette.java

License:Open Source License

/**
 * Hijacked; supposed to create a GraphicalViewer on the specified <code>Composite</code>.
 * <p>//from   w ww  .  j av a 2 s . c  o m
 * Instead we make use of the composite for our MapViewer.
 * 
 * @param parent
 *            the parent composite
 */
protected void createGraphicalViewer(Composite parent) {

    // GraphicalViewer viewer = new GraphicalViewerImpl();
    // viewer.createControl(parent);
    // setGraphicalViewer(viewer);
    // configureGraphicalViewer();
    // hookGraphicalViewer();
    // initializeGraphicalViewer();

    composite = new Composite(parent, SWT.NO_BACKGROUND);

    composite.setLayout(new FormLayout());
    composite.setFont(parent.getFont());
    setPartName(getMap().getName());

    setTitleToolTip(Messages.MapEditor_titleToolTip);
    setTitleImage(ProjectUIPlugin.getDefault().getImage(ISharedImages.MAP_OBJ));

    final IPreferenceStore preferenceStore = ProjectPlugin.getPlugin().getPreferenceStore();
    boolean istiled = preferenceStore
            .getBoolean(org.locationtech.udig.project.preferences.PreferenceConstants.P_TILED_RENDERING);

    if (!istiled) {
        viewer = new MapViewer(composite, SWT.DOUBLE_BUFFERED);
    } else {
        viewer = new MapViewer(composite, SWT.MULTI | SWT.NO_BACKGROUND);
    }
    // we need an edit domain for GEF
    // This represents the "Current Tool" for the Palette
    // We should not duplicate the idea of current tools so we may
    // need to delegate to getEditDomain; and just use the MapEditTool *id*
    // editDomain = new MapEditDomain(this);
    // setEditDomain( editDomain );

    // allow the viewer to open our context menu; work with our selection proivder etc
    viewer.init(this);

    // if a map was provided as input we can ask the viewer to use it
    Map input = (Map) ((UDIGEditorInput) getEditorInput()).getProjectElement();
    if (input != null) {
        viewer.setMap(input);
    }

    FormData formdata = new FormData();
    formdata.top = new FormAttachment(0);
    formdata.bottom = new FormAttachment(100, -ScaleRatioLabel.STATUS_LINE_HEIGHT);
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    viewer.getViewport().getControl().setLayoutData(formdata);

    statusLineManager.add(new GroupMarker(StatusLineManager.BEGIN_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.MIDDLE_GROUP));
    statusLineManager.add(new GroupMarker(StatusLineManager.END_GROUP));
    statusLineManager.createControl(composite, SWT.BORDER);
    formdata = new FormData();
    formdata.left = new FormAttachment(0);
    formdata.right = new FormAttachment(100);
    formdata.top = new FormAttachment(viewer.getViewport().getControl(), 0, SWT.BOTTOM);
    formdata.bottom = new FormAttachment(100);
    statusLineManager.getControl().setLayoutData(formdata);

    getSite().getPage().addPartListener(partlistener);
    registerFeatureFlasher();
    viewer.getViewport().addPaneListener(getMap().getViewportModelInternal());

    layerSelectionListener = new LayerSelectionListener(new LayerSelectionListener.Callback() {

        public void callback(List<Layer> layers) {
            if (composite.isDisposed()) {
                getSite().getPage().removePostSelectionListener(layerSelectionListener);
                return; // component.isVisible cannot be called on a disposed component
            } else if (!composite.isVisible())
                return;
            Layer layer = layers.get(0);
            // Second condition excludes unnecessary UI call
            if (layer.getMap() == getMap() && getMap().getEditManager().getSelectedLayer() != layer) {
                SelectLayerCommand selectLayerCommand = new SelectLayerCommand(layer);
                selectLayerCommand.setMap(getMap());
                try {
                    selectLayerCommand.run(ProgressManager.instance().get());
                } catch (Exception e) {
                    throw (RuntimeException) new RuntimeException().initCause(e);
                }
                getMap().sendCommandSync(new UndoRedoCommand(selectLayerCommand));
            }
        }

    });
    getSite().getPage().addPostSelectionListener(layerSelectionListener);

    for (Layer layer : getMap().getLayersInternal()) {
        layer.addListener(layerListener);
    }

    dropTarget = UDIGDragDropUtilities.addDropSupport(viewer.getViewport().getControl(), this);
    this.replaceableSelectionProvider = new ReplaceableSelectionProvider();
    getSite().setSelectionProvider(replaceableSelectionProvider);
    runMapOpeningInterceptor(getMap());
    mapEditorSite = new MapEditorSite(super.getSite(), this);
    updateCRS();
    updateScaleLabel();

    getMap().getViewportModel().addViewportModelListener(new IViewportModelListener() {

        public void changed(ViewportModelEvent event) {
            if (getMap() == null) {
                event.getSource().removeViewportModelListener(this);
                return;
            }
            if (event.getType() == EventType.CRS) {
                updateCRS();
            }
        }

    });

    setDirty(isMapDirty());
}