]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramLayersPage.java
Even more fixes to layers
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagramEditor / DiagramLayersPage.java
index 1632f32caa5c0d6e58d2d9ff15992ea2a7ab01bb..3bce16ccb99da72f42c7a4fd0197c90e2cc676dd 100644 (file)
@@ -56,41 +56,43 @@ import org.simantics.g2d.diagram.DiagramHints;
 import org.simantics.g2d.diagram.IDiagram;
 import org.simantics.g2d.diagram.participant.Selection;
 import org.simantics.g2d.element.ElementClass;
+import org.simantics.g2d.element.ElementHints;
 import org.simantics.g2d.element.IElement;
+import org.simantics.g2d.element.handler.ElementLayerListener;
 import org.simantics.g2d.element.handler.ElementLayers;
 import org.simantics.g2d.layers.IEditableLayer;
 import org.simantics.g2d.layers.ILayer;
 import org.simantics.g2d.layers.ILayers;
+import org.simantics.g2d.layers.ILayers.ILayersListener;
 import org.simantics.g2d.layers.ILayersEditor;
 import org.simantics.g2d.layers.SimpleLayer;
-import org.simantics.g2d.layers.ILayersEditor.ILayersEditorListener;
 import org.simantics.utils.datastructures.Arrays;
+import org.simantics.utils.datastructures.disposable.IDisposable;
+import org.simantics.utils.datastructures.disposable.IDisposeListener;
 import org.simantics.utils.datastructures.hints.HintListenerAdapter;
+import org.simantics.utils.datastructures.hints.IHintContext.Key;
 import org.simantics.utils.datastructures.hints.IHintListener;
 import org.simantics.utils.datastructures.hints.IHintObservable;
-import org.simantics.utils.datastructures.hints.IHintContext.Key;
 import org.simantics.utils.ui.ISelectionUtils;
 
 public class DiagramLayersPage extends Page implements ILayersViewPage {
 
-    private static final String TEXT_APPLY_FOCUS_SETTINGS = "Focus Active";
-    private static final String TOOLTIP_APPLY_FOCUS_SETTINGS = "Only Focus Diagram Elements For Active Roles";
-    private static final String TEXT_IGNORE_FOCUS_SETTINGS = "Focus All";
-    private static final String TOOLTIP_IGNORE_FOCUS_SETTINGS = "Focus All Diagram Elements Regardless Of Active Roles";
+    private static final String TEXT_IGNORE_FOCUS_SETTINGS = Messages.DiagramLayersPage_FocusAll;
+    private static final String TOOLTIP_IGNORE_FOCUS_SETTINGS = Messages.DiagramLayersPage_FocusAllTT;
 
-    private static final String TEXT_APPLY_VISIBILITY_SETTINGS = "Show Active";
-    private static final String TOOLTIP_APPLY_VISIBILITY_SETTINGS = "Only Show Diagram Elements For Active Roles";
-    private static final String TEXT_IGNORE_VISIBILITY_SETTINGS = "Show All";
-    private static final String TOOLTIP_IGNORE_VISIBILITY_SETTINGS = "Show All Diagram Elements Regardless Of Active Roles";
+    private static final String TEXT_IGNORE_VISIBILITY_SETTINGS = Messages.DiagramLayersPage_ShowAll;
+    private static final String TOOLTIP_IGNORE_VISIBILITY_SETTINGS = Messages.DiagramLayersPage_ShowAllTT;
 
     final private ICanvasContext context;
-    final private IDiagram diagram;
     private CheckboxTreeViewer viewer;
+    private Button ignoreVisibilityButton;
+    private Button ignoreFocusButton;
     private Composite composite;
     private TreeEditor editor;
 
     private Collection<IElement> elements = Collections.emptySet();
-
+    private ILayersEditor layers;
+    
     enum Attribute {
         Visible,
         Focusable
@@ -107,7 +109,7 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
         boolean toBoolean() {
             switch (this) {
                 case Both:
-                    throw new IllegalStateException("cannot convert Tristate Both to boolean");
+                    throw new IllegalStateException("cannot convert Tristate Both to boolean"); //$NON-NLS-1$
                 case False:
                     return false;
                 case True:
@@ -167,19 +169,6 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
         return null;
     }
 
-    boolean setAttribute(IElement e, ILayer layer, Attribute attribute, boolean value) {
-        ElementClass ec = e.getElementClass();
-        for (ElementLayers el : ec.getItemsByClass(ElementLayers.class)) {
-            switch (attribute) {
-                case Visible:
-                    return el.setVisibility(e, layer, value);
-                case Focusable:
-                    return el.setFocusability(e, layer, value);
-            }
-        }
-        return false;
-    }
-
     Tristate getJointAttribute(Collection<IElement> elements, ILayer layer, Attribute attribute) {
         Tristate state = null;
         for (IElement e : elements) {
@@ -196,13 +185,39 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
         return state;
     }
 
-    int setAttribute(Collection<IElement> elements, ILayer layer, Attribute attribute, boolean value) {
-        int result = 0;
-        for (IElement e : elements) {
-            if (setAttribute(e, layer, attribute, value))
-                ++result;
+    void setAttribute(Collection<IElement> elements, ILayer layer, Attribute attribute, boolean value) {
+        // Short-circuit the hint updates so that the result will be immediately available for viewer.refresh().
+        // There is no listener for the element layer hints so the viewer won't update the tristates automatically!
+
+        IDiagram diagram = context.getDefaultHintContext().getHint(DiagramHints.KEY_DIAGRAM);
+        ElementLayerListener elementLayerListener = diagram.getHint(DiagramHints.KEY_ELEMENT_LAYER_LISTENER);
+        switch (attribute) {
+            case Visible:
+                for (IElement e : elements) {
+                    Set<ILayer> elementLayers = (Set<ILayer>) e.getHint(ElementHints.KEY_VISIBLE_LAYERS);
+                    if (elementLayers != null) {
+                        if (value)
+                            elementLayers.add(layer);
+                        else
+                            elementLayers.remove(layer);
+                    }
+                    elementLayerListener.visibilityChanged(e, layer, value);
+                }
+                break;
+            case Focusable:
+                for (IElement e : elements) {
+                    Set<ILayer> elementLayers = (Set<ILayer>) e.getHint(ElementHints.KEY_FOCUS_LAYERS);
+                    if (elementLayers != null) {
+                        if (value)
+                            elementLayers.add(layer);
+                        else
+                            elementLayers.remove(layer);
+                    }
+                    elementLayerListener.focusabilityChanged(e, layer, value);
+                }
+                break;
         }
-        return result;
+        elementLayerListener.flush();
     }
 
 
@@ -227,110 +242,154 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
         }
 
         private void redraw() {
-            viewer.getControl().getDisplay().asyncExec(new Runnable() {
+            if (viewer != null) {
+                viewer.getControl().getDisplay().asyncExec(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (viewer.getControl().isDisposed())
+                            return;
+                        viewer.getControl().redraw();
+                    }
+                });
+            }
+        }
+    };
+    
+    final private IDisposeListener contextDisposeListener = new IDisposeListener() {
+
+        @Override
+        public void onDisposed(IDisposable sender) {
+            if (getControl() != null) getControl().getDisplay().asyncExec(new Runnable() {
                 @Override
                 public void run() {
-                    if (viewer.getControl().isDisposed())
-                        return;
-                    viewer.getControl().redraw();
+                    dispose();
                 }
             });
         }
     };
 
-    public DiagramLayersPage(IDiagram diagram, ICanvasContext context) {
-
-        assert(diagram != null);
-
-        this.diagram = diagram;
+    public DiagramLayersPage(ICanvasContext context) {
         this.context = context;
 
         context.getDefaultHintContext().addKeyHintListener(Selection.SELECTION0, selectionListener);
+        context.addDisposeListener(contextDisposeListener);
     }
 
     @Override
     public void dispose() {
 
         context.getDefaultHintContext().removeKeyHintListener(Selection.SELECTION0, selectionListener);
-
+        context.removeDisposeListener(contextDisposeListener);
+        if (layers != null && layersListener != null) {
+            layers.removeLayersListener(layersListener);
+            layersListener = null;
+        }
         super.dispose();
 
     }
 
     @Override
     public void createControl(Composite parent) {
-
-        final ILayersEditor layers = diagram.getHint(DiagramHints.KEY_LAYERS_EDITOR);
-        layers.addListener(new ILayersEditorListener() {
-
+        composite = new Composite(parent, SWT.NONE);
+        GridLayoutFactory.fillDefaults().numColumns(4).applyTo(composite);
+        
+        IDiagram diagram = context.getDefaultHintContext().getHint(DiagramHints.KEY_DIAGRAM);
+        if (diagram != null) onDiagramSet(diagram);
+        context.getDefaultHintContext().addKeyHintListener(DiagramHints.KEY_DIAGRAM, new IHintListener() {
             @Override
-            public void layerRemoved(ILayer layer) {
-                scheduleRefresh();
+            public void hintChanged(IHintObservable sender, Key key, Object oldValue, Object newValue) {
+                IDiagram diagram = (IDiagram)newValue;
+                onDiagramSet(diagram);
             }
 
             @Override
-            public void layerAdded(ILayer layer) {
-                scheduleRefresh();
+            public void hintRemoved(IHintObservable sender, Key key, Object oldValue) {
             }
 
-            @Override
-            public void layerActivated(ILayer layer) {
-                scheduleRefresh();
-            }
+        });
+    }
+    
+    private void onDiagramSet(IDiagram diagram) {
+        if (diagram != null) {
+            layers = diagram.getHint(DiagramHints.KEY_LAYERS_EDITOR);
+            if (layers != null) initialize(layers, diagram);
+            diagram.addKeyHintListener(DiagramHints.KEY_LAYERS_EDITOR, new IHintListener() {
+                
+                
+                @Override
+                public void hintChanged(IHintObservable sender, Key key, Object oldValue, Object newValue) {
+                    if (newValue != null) {
+                        initialize(layers, diagram);
+                    }
+                }
+                @Override
+                public void hintRemoved(IHintObservable sender, Key key, Object oldValue) {
+                }
 
-            @Override
-            public void layerDeactivated(ILayer layer) {
-                scheduleRefresh();
-            }
+            });
+        }
+    }
 
-            @Override
-            public void ignoreFocusChanged(boolean value) {
-            }
+    private void initialize(ILayersEditor layers, IDiagram diagram) {
+       composite.getDisplay().asyncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               initialize2(layers, diagram);
+                       }
+       });
+    }
 
-            @Override
-            public void ignoreVisibilityChanged(boolean value) {
-            }
+    private ILayersListener layersListener = new ILayersListener() {
 
-            void scheduleRefresh() {
-                viewer.getControl().getDisplay().asyncExec(new Runnable() {
-                    @Override
-                    public void run() {
-                        viewer.refresh();
-                    }
-                });
+        @Override
+        public void changed() {
+            scheduleRefresh();
+        }
+
+        void scheduleRefresh() {
+            viewer.getControl().getDisplay().asyncExec(new Runnable() {
+                @Override
+                public void run() {
+                    viewer.refresh();
+                    ignoreVisibilityButton.setSelection(layers.getIgnoreVisibilitySettings());
+                    ignoreFocusButton.setSelection(layers.getIgnoreFocusSettings());
+                    if (!context.isDisposed())
+                        context.getContentContext().setDirty();
+                }
+            });
+        }
+    };
+
+    private static String findFreshName(ILayers layers, String proposal) {
+        Set<ILayer> all = layers.getLayers();
+        String name = proposal;
+        int i = 1;
+        while (true) {
+            boolean match = false;
+            for (ILayer layer : all) {
+                if (name.equals(layer.getName())) {
+                    match = true;
+                    break;
+                }
             }
-        });
+            if (!match)
+                return name;
+            ++i;
+            name = proposal + " " + i; //$NON-NLS-1$
+        }
+    }
 
-        composite = new Composite(parent, SWT.NONE);
-        GridLayoutFactory.fillDefaults().numColumns(4).applyTo(composite);
+    private void initialize2(ILayersEditor layers, IDiagram diagram) {
+        layers.addLayersListener(layersListener);
 
         Button addButton = new Button(composite, SWT.NONE);
-        addButton.setText("New");
-        addButton.setToolTipText("Create New Diagram Role");
+        addButton.setText(Messages.DiagramLayersPage_New);
+        addButton.setToolTipText(Messages.DiagramLayersPage_NewTT);
         addButton.addSelectionListener(new SelectionListener() {
 
-            String findFreshName(ILayers layers, String proposal) {
-                Set<ILayer> all = layers.getLayers();
-                String name = proposal;
-                int i = 1;
-                while (true) {
-                    boolean match = false;
-                    for (ILayer layer : all) {
-                        if (name.equals(layer.getName())) {
-                            match = true;
-                            break;
-                        }
-                    }
-                    if (!match)
-                        return name;
-                    ++i;
-                    name = proposal + " " + i;
-                }
-            }
-
             @Override
             public void widgetSelected(SelectionEvent e) {
-                String name = findFreshName(layers, "New Role");
+                String name = findFreshName(layers, Messages.DiagramLayersPage_NewRole);
                 SimpleLayer layer = new SimpleLayer(name);
                 layers.addLayer(layer);
                 layers.activate(layer);
@@ -344,8 +403,8 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
         });
 
         final Button removeButton = new Button(composite, SWT.NONE);
-        removeButton.setText("Remove");
-        removeButton.setToolTipText("Remove Selected Diagram Role");
+        removeButton.setText(Messages.DiagramLayersPage_Remove);
+        removeButton.setToolTipText(Messages.DiagramLayersPage_RemoveTT);
         removeButton.addSelectionListener(new SelectionListener() {
             @Override
             public void widgetSelected(SelectionEvent e) {
@@ -372,6 +431,15 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
                 if (selectIndex >= 0) {
                     viewer.getTree().select(all[selectIndex]);
                 }
+                context.getThreadAccess().asyncExec(new Runnable() {
+
+                    @Override
+                    public void run() {
+                        if(context.isDisposed()) return;
+                        context.getContentContext().setDirty();
+                    }
+
+                });
             }
 
             @Override
@@ -380,34 +448,15 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
             }
         });
 
-        String ignoreVisibilityText = TEXT_IGNORE_VISIBILITY_SETTINGS;
-        String ignoreVisibilityTooltip = TOOLTIP_IGNORE_VISIBILITY_SETTINGS;
-        boolean ignoreVisibility = layers.getIgnoreVisibilitySettings();
-        if (ignoreVisibility) {
-            ignoreVisibilityText = TEXT_APPLY_VISIBILITY_SETTINGS;
-            ignoreVisibilityTooltip = TOOLTIP_APPLY_VISIBILITY_SETTINGS;
-        }
-
-        final Button ignoreVisibilityButton = new Button(composite, SWT.NONE);
-        ignoreVisibilityButton.setText(ignoreVisibilityText);
-        ignoreVisibilityButton.setToolTipText(ignoreVisibilityTooltip);
+        ignoreVisibilityButton = new Button(composite, SWT.CHECK);
+        ignoreVisibilityButton.setText(TEXT_IGNORE_VISIBILITY_SETTINGS);
+        ignoreVisibilityButton.setToolTipText(TOOLTIP_IGNORE_VISIBILITY_SETTINGS);
+        ignoreVisibilityButton.setSelection(layers.getIgnoreVisibilitySettings());
         ignoreVisibilityButton.addSelectionListener(new SelectionListener() {
 
             @Override
             public void widgetSelected(SelectionEvent e) {
-                String ignoreText = TEXT_IGNORE_VISIBILITY_SETTINGS;
-                String ignoreTooltip= TOOLTIP_IGNORE_VISIBILITY_SETTINGS;
-                boolean ignore = layers.getIgnoreVisibilitySettings();
-                if(!ignore) {
-                    ignoreText = TEXT_APPLY_VISIBILITY_SETTINGS;
-                    ignoreTooltip = TOOLTIP_APPLY_VISIBILITY_SETTINGS;
-                    layers.setIgnoreVisibilitySettings(true);
-                } else {
-                    layers.setIgnoreVisibilitySettings(false);
-                }
-                ignoreVisibilityButton.setText(ignoreText);
-                ignoreVisibilityButton.setToolTipText(ignoreTooltip);
-                composite.layout();
+                layers.setIgnoreVisibilitySettings(!layers.getIgnoreVisibilitySettings());
                 context.getThreadAccess().asyncExec(new Runnable() {
 
                     @Override
@@ -426,34 +475,15 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
 
         });
 
-        String ignoreFocusText = TEXT_IGNORE_FOCUS_SETTINGS;
-        String ignoreFocusTooltip = TOOLTIP_IGNORE_FOCUS_SETTINGS;
-        boolean ignoreFocus = layers.getIgnoreFocusSettings();
-        if(ignoreFocus) {
-            ignoreFocusText = TEXT_APPLY_FOCUS_SETTINGS;
-            ignoreFocusTooltip = TOOLTIP_APPLY_FOCUS_SETTINGS;
-        }
-
-        final Button ignoreFocusButton = new Button(composite, SWT.NONE);
-        ignoreFocusButton.setText(ignoreFocusText);
-        ignoreFocusButton.setToolTipText(ignoreFocusTooltip);
+        ignoreFocusButton = new Button(composite, SWT.CHECK);
+        ignoreFocusButton.setText(TEXT_IGNORE_FOCUS_SETTINGS);
+        ignoreFocusButton.setToolTipText(TOOLTIP_IGNORE_FOCUS_SETTINGS);
+        ignoreFocusButton.setSelection(layers.getIgnoreFocusSettings());
         ignoreFocusButton.addSelectionListener(new SelectionListener() {
 
             @Override
             public void widgetSelected(SelectionEvent e) {
-                String ignoreText = TEXT_IGNORE_FOCUS_SETTINGS;
-                String ignoreTooltip = TOOLTIP_IGNORE_FOCUS_SETTINGS;
-                boolean ignore = layers.getIgnoreFocusSettings();
-                if(!ignore) {
-                    ignoreText = TEXT_APPLY_FOCUS_SETTINGS;
-                    ignoreTooltip = TOOLTIP_APPLY_FOCUS_SETTINGS;
-                    layers.setIgnoreFocusSettings(true);
-                } else {
-                    layers.setIgnoreFocusSettings(false);
-                }
-                ignoreFocusButton.setText(ignoreText);
-                ignoreFocusButton.setToolTipText(ignoreTooltip);
-                composite.layout();
+                layers.setIgnoreFocusSettings(!layers.getIgnoreFocusSettings());
                 context.getThreadAccess().asyncExec(new Runnable() {
 
                     @Override
@@ -475,19 +505,19 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
         viewer = new CheckboxTreeViewer(composite, SWT.BORDER | SWT.FULL_SELECTION );
 
         GridDataFactory.fillDefaults().grab(true, true).span(4, 1).applyTo(viewer.getControl());
-        viewer.getControl().setToolTipText("Selects the diagram to include in the exported document.");
+        viewer.getControl().setToolTipText(Messages.DiagramLayersPage_SelectTT);
         viewer.setAutoExpandLevel(TreeViewer.ALL_LEVELS);
         viewer.getTree().setHeaderVisible(true);
         editor = new TreeEditor(viewer.getTree());
 
         final TreeColumn column1 = new TreeColumn(viewer.getTree(), SWT.LEFT);
-        column1.setText("Role");
+        column1.setText(Messages.DiagramLayersPage_Role);
         column1.setWidth(100);
         final TreeColumn column2 = new TreeColumn(viewer.getTree(), SWT.LEFT);
-        column2.setText("Show");
+        column2.setText(Messages.DiagramLayersPage_Show);
         column2.setWidth(50);
         final TreeColumn column3 = new TreeColumn(viewer.getTree(), SWT.LEFT);
-        column3.setText("Focus");
+        column3.setText(Messages.DiagramLayersPage_Focus);
         column3.setWidth(50);
         viewer.getTree().addListener(SWT.Resize, new Listener() {
             @Override
@@ -519,16 +549,20 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
                     Tristate state = getJointAttribute(elements, lz[index], attribute);
 
                     Color color = null;
-                    switch (state) {
-                        case False:
-                            color = viewer.getTree().getDisplay().getSystemColor(SWT.COLOR_RED);
-                            break;
-                        case True:
-                            color = viewer.getTree().getDisplay().getSystemColor(SWT.COLOR_GREEN);
-                            break;
-                        case Both:
-                            color = viewer.getTree().getDisplay().getSystemColor(SWT.COLOR_GRAY);
-                            break;
+                    if (state == null) {
+                        color = viewer.getTree().getDisplay().getSystemColor(SWT.COLOR_GRAY);
+                    } else {
+                        switch (state) {
+                            case False:
+                                color = viewer.getTree().getDisplay().getSystemColor(SWT.COLOR_RED);
+                                break;
+                            case True:
+                                color = viewer.getTree().getDisplay().getSystemColor(SWT.COLOR_GREEN);
+                                break;
+                            case Both:
+                                color = viewer.getTree().getDisplay().getSystemColor(SWT.COLOR_GRAY);
+                                break;
+                        }
                     }
 
                     GC gc = event.gc;
@@ -551,8 +585,6 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
                     // FIXME: Eclipse currently eats F2 presses. This should be
                     // implemented as a command handler or find some way to
                     // force these listeners to have priority...
-                    System.out.println("startediting");
-
                     TreeItem[] items = viewer.getTree().getSelection();
                     if(items.length != 1)
                         return;
@@ -594,18 +626,16 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
                 rect = item.getBounds(1);
                 if (rect.contains(pt)) {
                     Tristate state = getJointAttribute(elements, layer, Attribute.Visible);
-                    if (setAttribute(elements, layer, Attribute.Visible, state.toggle().toBoolean()) > 0) {
-                        refresh();
-                    }
+                    setAttribute(elements, layer, Attribute.Visible, state.toggle().toBoolean());
+                    refresh();
                     return;
                 }
 
                 Rectangle rect2 = item.getBounds(2);
                 if (rect2.contains(pt)) {
                     Tristate state = getJointAttribute(elements, layer, Attribute.Focusable);
-                    if (setAttribute(elements, layer, Attribute.Focusable, state.toggle().toBoolean()) > 0) {
-                        refresh();
-                    }
+                    setAttribute(elements, layer, Attribute.Focusable, state.toggle().toBoolean());
+                    refresh();
                     return;
                 }
             }
@@ -685,7 +715,7 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
                     ILayer layer  = (ILayer)cell.getElement();
                     cell.setText(layer.getName());
                 } else {
-                    cell.setText("");
+                    cell.setText(""); //$NON-NLS-1$
                 }
             }
         });
@@ -707,6 +737,8 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
         for(ILayer layer : layers.getVisibleLayers()) {
             viewer.setSubtreeChecked(layer, true);
         }
+
+        composite.layout();
     }
 
     @Override
@@ -760,8 +792,8 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
                     case SWT.FocusOut:
                         if(layer instanceof IEditableLayer) {
                             IEditableLayer l = (IEditableLayer)layer;
-                            l.setName(text.getText());
-                            System.out.println("renamed layer to " + text.getText());
+                            String name = findFreshName(layers, text.getText());
+                            l.setName(name);
                             viewer.refresh();
                         }
 
@@ -808,9 +840,11 @@ public class DiagramLayersPage extends Page implements ILayersViewPage {
                             case SWT.TRAVERSE_RETURN:
                                 if(layer instanceof IEditableLayer) {
                                     IEditableLayer l = (IEditableLayer)layer;
-                                    l.setName(text.getText());
-                                    //System.out.println("renamed layer to " + text.getText());
+                                    String name = findFreshName(layers, text.getText());
+                                    l.setName(name);
                                     viewer.refresh();
+                                    //System.out.println("renamed layer to " + text.getText());
+                                    //viewer.refresh();
                                 }
                                 //                                     error = modifier.isValid(text.getText());
                                 //                                     if (error == null) {