Revision: 5832 http://sourceforge.net/p/jump-pilot/code/5832 Author: ma15569 Date: 2018-06-04 12:41:21 +0000 (Mon, 04 Jun 2018) Log Message: ----------- Following Feature request #243 Layer selection in plugins and expanding raster layer selection to (also) AbstractDialog combobox instead to (only) layerable selection on the tree, a check is required to enable/disable Sextante plugins on the menu
Modified Paths: -------------- core/trunk/src/com/vividsolutions/jump/workbench/plugin/EnableCheckFactory.java Modified: core/trunk/src/com/vividsolutions/jump/workbench/plugin/EnableCheckFactory.java =================================================================== --- core/trunk/src/com/vividsolutions/jump/workbench/plugin/EnableCheckFactory.java 2018-06-04 06:40:20 UTC (rev 5831) +++ core/trunk/src/com/vividsolutions/jump/workbench/plugin/EnableCheckFactory.java 2018-06-04 12:41:21 UTC (rev 5832) @@ -1,4 +1,3 @@ - /* * The Unified Mapping Platform (JUMP) is an extensible, interactive GUI * for visualizing and manipulating spatial features with geometry and attributes. @@ -36,9 +35,7 @@ import static com.vividsolutions.jump.I18N.get; import static com.vividsolutions.jump.I18N.getMessage; -import java.util.Arrays; import java.util.Collection; -import java.util.Iterator; import javax.swing.JComponent; import javax.swing.JInternalFrame; @@ -67,11 +64,12 @@ /** * Creates basic EnableChecks. + * * @see EnableCheck */ public class EnableCheckFactory { - private WorkbenchContext workbenchContext; + private final WorkbenchContext workbenchContext; private static EnableCheckFactory instance = null; public EnableCheckFactory(WorkbenchContext workbenchContext) { @@ -79,39 +77,46 @@ this.workbenchContext = workbenchContext; } - public static EnableCheckFactory getInstance(){ - if (instance==null) - instance = new EnableCheckFactory(JUMPWorkbench.getInstance().getContext()); - return instance; + public static EnableCheckFactory getInstance() { + if (instance == null) { + instance = new EnableCheckFactory(JUMPWorkbench.getInstance() + .getContext()); + } + return instance; } - //<<TODO:WORKAROUND>> I came across a bug in the JBuilder 4 compiler (bcj.exe) - //that occurs when using the Java ternary operator ( ? : ). For it to - //happen, [1] the middle operand must be null and [2] an inner class - //must be nearby. For example, try using JBuilder to compile the following code: + // <<TODO:WORKAROUND>> I came across a bug in the JBuilder 4 compiler + // (bcj.exe) + // that occurs when using the Java ternary operator ( ? : ). For it to + // happen, [1] the middle operand must be null and [2] an inner class + // must be nearby. For example, try using JBuilder to compile the following + // code: // - // import java.awt.event.WindowAdapter; - // public class TestClass { - // static public void main(String[] args) { - // System.out.println(true ? null : "FALSE"); - // WindowAdapter w = new WindowAdapter() { }; - // } - // } + // import java.awt.event.WindowAdapter; + // public class TestClass { + // static public void main(String[] args) { + // System.out.println(true ? null : "FALSE"); + // WindowAdapter w = new WindowAdapter() { }; + // } + // } // - //You'd expect it to print out "null", but "FALSE" is printed! And if you comment - //out the line with the anonymous inner class (WindowAdapter w), it prints out - //"null" as expected! I've submitted a bug report to Borland (case number 488569). + // You'd expect it to print out "null", but "FALSE" is printed! And if you + // comment + // out the line with the anonymous inner class (WindowAdapter w), it prints + // out + // "null" as expected! I've submitted a bug report to Borland (case number + // 488569). // - //So, if you're using JBuilder, don't use ?: if the middle operand could be null! - //[Jon Aquino] + // So, if you're using JBuilder, don't use ?: if the middle operand could be + // null! + // [Jon Aquino] public EnableCheck createTaskWindowMustBeActiveCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - return ( - !(workbenchContext.getWorkbench().getFrame().getActiveInternalFrame() - instanceof TaskFrame)) - ? get("com.vividsolutions.jump.workbench.plugin.A-Task-Window-must-be-active") - : null; + return (!(workbenchContext.getWorkbench().getFrame() + .getActiveInternalFrame() instanceof TaskFrame)) ? get("com.vividsolutions.jump.workbench.plugin.A-Task-Window-must-be-active") + : null; } }; } @@ -118,12 +123,11 @@ public EnableCheck createWindowWithSelectionManagerMustBeActiveCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - return ( - !(workbenchContext.getWorkbench().getFrame().getActiveInternalFrame() - instanceof SelectionManagerProxy)) - ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-selection-manager-must-be-active") - : null; + return (!(workbenchContext.getWorkbench().getFrame() + .getActiveInternalFrame() instanceof SelectionManagerProxy)) ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-selection-manager-must-be-active") + : null; } }; } @@ -130,12 +134,11 @@ public EnableCheck createWindowWithLayerManagerMustBeActiveCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - return ( - !(workbenchContext.getWorkbench().getFrame().getActiveInternalFrame() - instanceof LayerManagerProxy)) - ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-layer-manager-must-be-active") - : null; + return (!(workbenchContext.getWorkbench().getFrame() + .getActiveInternalFrame() instanceof LayerManagerProxy)) ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-layer-manager-must-be-active") + : null; } }; } @@ -142,12 +145,11 @@ public EnableCheck createWindowWithAssociatedTaskFrameMustBeActiveCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - return ( - !(workbenchContext.getWorkbench().getFrame().getActiveInternalFrame() - instanceof TaskFrameProxy)) - ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-an-associated-task-frame-must-be-active") - : null; + return (!(workbenchContext.getWorkbench().getFrame() + .getActiveInternalFrame() instanceof TaskFrameProxy)) ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-an-associated-task-frame-must-be-active") + : null; } }; } @@ -154,12 +156,11 @@ public EnableCheck createWindowWithLayerNamePanelMustBeActiveCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - return ( - !(workbenchContext.getWorkbench().getFrame().getActiveInternalFrame() - instanceof LayerNamePanelProxy)) - ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-layer-name-panel-must-be-active") - : null; + return (!(workbenchContext.getWorkbench().getFrame() + .getActiveInternalFrame() instanceof LayerNamePanelProxy)) ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-layer-name-panel-must-be-active") + : null; } }; } @@ -166,12 +167,11 @@ public EnableCheck createWindowWithLayerViewPanelMustBeActiveCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - return ( - !(workbenchContext.getWorkbench().getFrame().getActiveInternalFrame() - instanceof LayerViewPanelProxy)) - ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-layer-view-panel-must-be-active") - : null; + return (!(workbenchContext.getWorkbench().getFrame() + .getActiveInternalFrame() instanceof LayerViewPanelProxy)) ? get("com.vividsolutions.jump.workbench.plugin.A-window-with-a-layer-view-panel-must-be-active") + : null; } }; } @@ -178,19 +178,15 @@ public EnableCheck createOnlyOneLayerMayHaveSelectedFeaturesCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - Collection layersWithSelectedFeatures = - ((SelectionManagerProxy) workbenchContext - .getWorkbench() - .getFrame() - .getActiveInternalFrame()) - .getSelectionManager() - .getFeatureSelection() + final Collection layersWithSelectedFeatures = ((SelectionManagerProxy) workbenchContext + .getWorkbench().getFrame().getActiveInternalFrame()) + .getSelectionManager().getFeatureSelection() .getLayersWithSelectedItems(); - return (layersWithSelectedFeatures.size() > 1) - ? get("com.vividsolutions.jump.workbench.plugin.Only-one-layer-may-have-selected-features") - : null; + return (layersWithSelectedFeatures.size() > 1) ? get("com.vividsolutions.jump.workbench.plugin.Only-one-layer-may-have-selected-features") + : null; } }; } @@ -197,17 +193,13 @@ public EnableCheck createOnlyOneLayerMayHaveSelectedItemsCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - Collection layersWithSelectedItems = - ((SelectionManagerProxy) workbenchContext - .getWorkbench() - .getFrame() - .getActiveInternalFrame()) - .getSelectionManager() - .getLayersWithSelectedItems(); - return (layersWithSelectedItems.size() > 1) - ? get("com.vividsolutions.jump.workbench.plugin.Only-one-layer-may-have-selected-items") - : null; + final Collection layersWithSelectedItems = ((SelectionManagerProxy) workbenchContext + .getWorkbench().getFrame().getActiveInternalFrame()) + .getSelectionManager().getLayersWithSelectedItems(); + return (layersWithSelectedItems.size() > 1) ? get("com.vividsolutions.jump.workbench.plugin.Only-one-layer-may-have-selected-items") + : null; } }; } @@ -214,13 +206,11 @@ public EnableCheck createSelectedItemsLayersMustBeEditableCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - for (Layer layer : ((SelectionManagerProxy)workbenchContext - .getWorkbench() - .getFrame() - .getActiveInternalFrame()) - .getSelectionManager() - .getLayersWithSelectedItems()) { + for (final Layer layer : ((SelectionManagerProxy) workbenchContext + .getWorkbench().getFrame().getActiveInternalFrame()) + .getSelectionManager().getLayersWithSelectedItems()) { if (!layer.isEditable()) { return getMessage( "com.vividsolutions.jump.workbench.plugin.Selected-items-layers-must-be-editable", @@ -235,6 +225,7 @@ public EnableCheck createExactlyNCategoriesMustBeSelectedCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -250,16 +241,18 @@ }; } - public EnableCheck createExactlyNLayerablesMustBeSelectedCheck( - final int n, - final Class layerableClass) { + public EnableCheck createExactlyNLayerablesMustBeSelectedCheck(final int n, + final Class layerableClass) { return new EnableCheck() { + @Override public String check(JComponent component) { - LayerNamePanel lnp = workbenchContext.getLayerableNamePanel(); + final LayerNamePanel lnp = workbenchContext + .getLayerableNamePanel(); if (lnp instanceof LayerNamePanel - && n == lnp.selectedNodes(layerableClass).size()) - return null; - + && n == lnp.selectedNodes(layerableClass).size()) { + return null; + } + String msg; if (n == 1) { msg = get("com.vividsolutions.jump.workbench.plugin.Exactly-one-layer-must-be-selected"); @@ -268,7 +261,7 @@ "com.vividsolutions.jump.workbench.plugin.Exactly-n-layers-must-be-selected", n); } - + return msg; } }; @@ -280,6 +273,7 @@ public EnableCheck createAtLeastNCategoriesMustBeSelectedCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -295,12 +289,12 @@ }; } - public EnableCheck createAtLeastNLayerablesMustBeSelectedCheck( - final int n, - final Class layerableClass) { + public EnableCheck createAtLeastNLayerablesMustBeSelectedCheck(final int n, + final Class layerableClass) { return new EnableCheck() { + @Override public String check(JComponent component) { - LayerNamePanel layerNamePanel = workbenchContext + final LayerNamePanel layerNamePanel = workbenchContext .getLayerableNamePanel(); String msg; if (n == 1) { @@ -323,6 +317,7 @@ public EnableCheck createAtLeastNLayersMustBeEditableCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -340,8 +335,10 @@ public EnableCheck createAtLeastOneVisibleLayersMustBeEditableCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - for (Layer layer : workbenchContext.getLayerManager().getLayers()) { + for (final Layer layer : workbenchContext.getLayerManager() + .getLayers()) { if (layer.isVisible() && layer.isEditable()) { return null; } @@ -350,15 +347,19 @@ } }; } - + public EnableCheck createExactlyOneSelectedLayerMustBeEditableCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - String msg = get("com.vividsolutions.jump.workbench.plugin.Exactly-one-selected-layer-must-be-editable"); - Layer[] layers = workbenchContext.getLayerableNamePanel().getSelectedLayers(); + final String msg = get("com.vividsolutions.jump.workbench.plugin.Exactly-one-selected-layer-must-be-editable"); + final Layer[] layers = workbenchContext.getLayerableNamePanel() + .getSelectedLayers(); int countSelectedEditable = 0; - for (int i = 0 ; i < layers.length ; i++) { - if (layers[i].isEditable()) countSelectedEditable++; + for (final Layer layer : layers) { + if (layer.isEditable()) { + countSelectedEditable++; + } } return 1 != countSelectedEditable ? msg : null; } @@ -367,8 +368,10 @@ public EnableCheck createAtLeastNLayerablesMustExistCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { - LayerManager layerManager = workbenchContext.getLayerManager(); + final LayerManager layerManager = workbenchContext + .getLayerManager(); String msg; if (n == 1) { msg = get("com.vividsolutions.jump.workbench.plugin.At-least-one-layerables-must-exist"); @@ -377,8 +380,8 @@ "com.vividsolutions.jump.workbench.plugin.At-least-n-layerables-must-exist", n); } - return (layerManager == null || n > layerManager.getLayerables(Layerable.class).size()) ? msg - : null; + return (layerManager == null || n > layerManager.getLayerables( + Layerable.class).size()) ? msg : null; } }; } @@ -385,8 +388,10 @@ public EnableCheck createAtLeastNLayersMustExistCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { - LayerManager layerManager = workbenchContext.getLayerManager(); + final LayerManager layerManager = workbenchContext + .getLayerManager(); String msg; if (n == 1) { msg = get("com.vividsolutions.jump.workbench.plugin.At-least-one-layer-must-exist"); @@ -403,6 +408,7 @@ public EnableCheck createAtMostNLayersMustExistCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -420,6 +426,7 @@ public EnableCheck createExactlyNVectorsMustBeDrawnCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -438,6 +445,7 @@ // [Jon Aquino] public EnableCheck createAtLeastNVectorsMustBeDrawnCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -453,46 +461,52 @@ } public EnableCheck createAtLeastNFeaturesMustBeSelectedCheck(final int n) { - return new EnableCheck() { - public String check(JComponent component) { - String msg; - if (n == 1) { - msg = get("com.vividsolutions.jump.workbench.plugin.At-least-one-feature-must-be-selected"); - } else { - msg = getMessage( - "com.vividsolutions.jump.workbench.plugin.At-least-n-features-must-be-selected", - n); - } - - JInternalFrame f = workbenchContext.getWorkbench().getFrame() - .getActiveInternalFrame(); - - return (f != null && f instanceof SelectionManagerProxy && n > ((SelectionManagerProxy) f) - .getSelectionManager().getFeaturesWithSelectedItemsCount()) ? msg - : null; - } - }; + return new EnableCheck() { + @Override + public String check(JComponent component) { + String msg; + if (n == 1) { + msg = get("com.vividsolutions.jump.workbench.plugin.At-least-one-feature-must-be-selected"); + } else { + msg = getMessage( + "com.vividsolutions.jump.workbench.plugin.At-least-n-features-must-be-selected", + n); + } + + final JInternalFrame f = workbenchContext.getWorkbench() + .getFrame().getActiveInternalFrame(); + + return (f != null && f instanceof SelectionManagerProxy && n > ((SelectionManagerProxy) f) + .getSelectionManager() + .getFeaturesWithSelectedItemsCount()) ? msg : null; + } + }; } public EnableCheck createAtLeastNItemsMustBeSelectedCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { - JInternalFrame iFrame = workbenchContext.getWorkbench() - .getFrame().getActiveInternalFrame(); + final JInternalFrame iFrame = workbenchContext.getWorkbench() + .getFrame().getActiveInternalFrame(); int selected = 0; - try{ - // Modified bu sstein [13. Aug. 2006], [13. Mar. 2008] mmichaud [11. Dec. 2011] - // It should now works homogeneously for ViewPnale, ViewAttributes and InfoPanel - selected = ((SelectionManagerProxy)iFrame).getSelectionManager().getSelectedItems().size(); + try { + // Modified bu sstein [13. Aug. 2006], [13. Mar. 2008] + // mmichaud [11. Dec. 2011] + // It should now works homogeneously for ViewPnale, + // ViewAttributes and InfoPanel + selected = ((SelectionManagerProxy) iFrame) + .getSelectionManager().getSelectedItems().size(); + } catch (final Exception e) { + // -- sstein: + // == eat exception == + System.out + .println("eat exception @ EnableCheckFactory.createAtLeastNItemsMustBeSelectedCheck(i) if a non taskframe(or child) is selected"); + // necessary if iFrame is OutputFrame or something + // and i dont know how to test for alle iFrames which exist + // or rather i do not know + // which are the ones accessible to the SelectionManager } - catch(Exception e){ - //-- sstein: - //== eat exception == - System.out.println("eat exception @ EnableCheckFactory.createAtLeastNItemsMustBeSelectedCheck(i) if a non taskframe(or child) is selected"); - //necessary if iFrame is OutputFrame or something - //and i dont know how to test for alle iFrames which exist or rather i do not know - //which are the ones accessible to the SelectionManager - } String retVal; String msg; if (n == 1) { @@ -514,6 +528,7 @@ public EnableCheck createExactlyNFeaturesMustBeSelectedCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -533,6 +548,7 @@ public EnableCheck createExactlyNItemsMustBeSelectedCheck(final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -550,8 +566,10 @@ }; } - public EnableCheck createExactlyNLayersMustHaveSelectedItemsCheck(final int n) { + public EnableCheck createExactlyNLayersMustHaveSelectedItemsCheck( + final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -568,9 +586,11 @@ } }; } - - public EnableCheck createExactlyNFeaturesMustHaveSelectedItemsCheck(final int n) { + + public EnableCheck createExactlyNFeaturesMustHaveSelectedItemsCheck( + final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -586,12 +606,14 @@ .getFeaturesWithSelectedItemsCount()) ? msg : null; } }; - } + } public EnableCheck createSelectedLayersMustBeEditableCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - for (Layer layer : workbenchContext.getLayerableNamePanel().getSelectedLayers()) { + for (final Layer layer : workbenchContext + .getLayerableNamePanel().getSelectedLayers()) { if (!layer.isEditable()) { return getMessage( "com.vividsolutions.jump.workbench.plugin.Selected-layers-must-be-editable", @@ -605,36 +627,40 @@ public EnableCheck createFenceMustBeDrawnCheck() { return new EnableCheck() { + @Override public String check(JComponent component) { - LayerViewPanel layerViewPanel = workbenchContext.getLayerViewPanel(); - return ( layerViewPanel == null || //[UT] 20.10.2005 not quite the error mesg - null == layerViewPanel.getFence()) - ? get("com.vividsolutions.jump.workbench.plugin.A-fence-must-be-drawn") + final LayerViewPanel layerViewPanel = workbenchContext + .getLayerViewPanel(); + return (layerViewPanel == null || // [UT] 20.10.2005 not quite + // the error mesg + null == layerViewPanel.getFence()) ? get("com.vividsolutions.jump.workbench.plugin.A-fence-must-be-drawn") : null; } }; } - public EnableCheck createBetweenNAndMVectorsMustBeDrawnCheck(final int min, final int max) { + public EnableCheck createBetweenNAndMVectorsMustBeDrawnCheck(final int min, + final int max) { return new EnableCheck() { + @Override public String check(JComponent component) { - return ((vectorCount() > max) || (vectorCount() < min)) - ? getMessage( + return ((vectorCount() > max) || (vectorCount() < min)) ? getMessage( "com.vividsolutions.jump.workbench.plugin.Between-and-vectors-must-be-drawn", min, max) - : null; + : null; } }; } int vectorCount() { - return new WarpingVectorLayerFinder(workbenchContext).getVectors().size(); + return new WarpingVectorLayerFinder(workbenchContext).getVectors() + .size(); } - public EnableCheck createAtLeastNFeaturesMustHaveSelectedItemsCheck( final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { String msg; if (n == 1) { @@ -653,116 +679,124 @@ } /** - * Check the current selection in layernamepanel against 2 lists of layerable - * classes. Returns an error message if at least one layerable is not an - * instance of the first class array or if at least one layerable is an - * instance of the second class array. + * Check the current selection in layernamepanel against 2 lists of + * layerable classes. Returns an error message if at least one layerable is + * not an instance of the first class array or if at least one layerable is + * an instance of the second class array. * - * @param classes layerables must all be instances of one of these classes - * @param excluded no layerable must be an instances of one of these classes + * @param classes + * layerables must all be instances of one of these classes + * @param excluded + * no layerable must be an instances of one of these classes * @return error message or null */ - public EnableCheck createSelectedLayerablesMustBeEither(final Class[] classes, final Class[] excluded) { - return new EnableCheck() { - public String check(JComponent component) { - StringBuilder types = new StringBuilder("["); - for (Class clz : classes) { - String clzName = get(clz.getCanonicalName()); - types.append(types.length() > 1 ? ", " + clzName : clzName); - } - types.append("]"); - StringBuilder exclusion = new StringBuilder("["); - for (Class clz : excluded) { - String clzName = get(clz.getCanonicalName()); - exclusion.append(exclusion.length() > 1 ? ", " + clzName : clzName); - } - exclusion.append("]"); - - String msg = getMessage( - "plugin.EnableCheckFactory.selected-layers-must-be-of-type", - types, exclusion); - - // fetch layer(ables) - LayerNamePanel lnp = workbenchContext.getLayerNamePanel(); - Layerable[] layerables; - if (lnp instanceof LayerableNamePanel) - layerables = ((LayerableNamePanel) lnp).getSelectedLayerables().toArray( - new Layerable[0]); - else - layerables = lnp.getSelectedLayers(); - - for (Layerable layerable : layerables) { - boolean ok = false; - for (Class clz : classes) { - if (clz.isAssignableFrom(layerable.getClass())) { - ok = true; - for (Class exc : excluded) { - if (exc.isAssignableFrom(layerable.getClass())) { - ok = false; + public EnableCheck createSelectedLayerablesMustBeEither( + final Class[] classes, final Class[] excluded) { + return new EnableCheck() { + @Override + public String check(JComponent component) { + final StringBuilder types = new StringBuilder("["); + for (final Class clz : classes) { + final String clzName = get(clz.getCanonicalName()); + types.append(types.length() > 1 ? ", " + clzName : clzName); + } + types.append("]"); + final StringBuilder exclusion = new StringBuilder("["); + for (final Class clz : excluded) { + final String clzName = get(clz.getCanonicalName()); + exclusion.append(exclusion.length() > 1 ? ", " + clzName + : clzName); + } + exclusion.append("]"); + + final String msg = getMessage( + "plugin.EnableCheckFactory.selected-layers-must-be-of-type", + types, exclusion); + + // fetch layer(ables) + final LayerNamePanel lnp = workbenchContext.getLayerNamePanel(); + Layerable[] layerables; + if (lnp instanceof LayerableNamePanel) { + layerables = ((LayerableNamePanel) lnp) + .getSelectedLayerables().toArray(new Layerable[0]); + } else { + layerables = lnp.getSelectedLayers(); + } + + for (final Layerable layerable : layerables) { + boolean ok = false; + for (final Class clz : classes) { + if (clz.isAssignableFrom(layerable.getClass())) { + ok = true; + for (final Class exc : excluded) { + if (exc.isAssignableFrom(layerable.getClass())) { + ok = false; + break; + } + } + } + if (ok) { break; } } + if (!ok) { + return msg; + } } - if (ok) { - break; - } + return null; } - if (!ok) - return msg; - } - return null; - } - }; + }; } - public EnableCheck createSelectedLayerablesMustBeEither(final Class[] classes) { - return createSelectedLayerablesMustBeEither(new Class[] { Layer.class }, - new Class[0]); + public EnableCheck createSelectedLayerablesMustBeEither( + final Class[] classes) { + return createSelectedLayerablesMustBeEither( + new Class[] { Layer.class }, new Class[0]); } - /** - * checks if selected layerables are vector layers. unfortunately - * {@link ReferencedImagesLayer}s are derived from OJ vector {@link Layer}. - * hence this method internally includes {@link Layer} but excludes - * {@link ReferencedImagesLayer}. - * - * @see EnableCheckFactory#createSelectedLayerablesMustBeEither(Class[], - * Class[]) - * @return error message or null - */ + /** + * checks if selected layerables are vector layers. unfortunately + * {@link ReferencedImagesLayer}s are derived from OJ vector {@link Layer}. + * hence this method internally includes {@link Layer} but excludes + * {@link ReferencedImagesLayer}. + * + * @see EnableCheckFactory#createSelectedLayerablesMustBeEither(Class[], + * Class[]) + * @return error message or null + */ public EnableCheck createSelectedLayerablesMustBeVectorLayers() { - return createSelectedLayerablesMustBeEither(new Class[] { Layer.class }, - new Class[] { ReferencedImagesLayer.class }); + return createSelectedLayerablesMustBeEither( + new Class[] { Layer.class }, + new Class[] { ReferencedImagesLayer.class }); } - + public EnableCheck createSelectedLayerablesMustBeWMSLayers() { - return createSelectedLayerablesMustBeEither(new Class[] { WMSLayer.class }); + return createSelectedLayerablesMustBeEither(new Class[] { WMSLayer.class }); } - + public EnableCheck createSelectedLayerablesMustBeRasterImageLayers() { - return createSelectedLayerablesMustBeEither(new Class[] { RasterImageLayer.class }); + return createSelectedLayerablesMustBeEither(new Class[] { RasterImageLayer.class }); } - + public EnableCheck createSelectedLayerablesMustBeReferencedImagesLayers() { - return createSelectedLayerablesMustBeEither(new Class[] { ReferencedImagesLayer.class }); + return createSelectedLayerablesMustBeEither(new Class[] { ReferencedImagesLayer.class }); } - /** - * Giuseppe Aruta - 2015-01-13 - * RasterImageLayer.class - * checks how many bands a Raster Image Layer (Sextante) has + * Giuseppe Aruta - 2015-01-13 RasterImageLayer.class checks how many bands + * a Raster Image Layer (Sextante) has */ public EnableCheck createRasterImageLayerExactlyNBandsMustExistCheck( final int n) { return new EnableCheck() { + @Override public String check(JComponent component) { - RasterImageLayer rLayer = (RasterImageLayer) LayerTools + final RasterImageLayer rLayer = (RasterImageLayer) LayerTools .getSelectedLayerable(workbenchContext.getWorkbench() .getContext(), RasterImageLayer.class); - int numbands = rLayer.getNumBands(); + final int numbands = rLayer.getNumBands(); String msg; if (n == 1) { @@ -773,9 +807,42 @@ n); } return (n != numbands) ? msg : null; - } + } }; } - - + + /** + * Check that at least n RasterImageLayer.class layers have been loaded + * + * @param number + * of RasterImageLayer.class layers + * @return error message or null + */ + public EnableCheck createAtLeastNRasterImageLayersMustExistCheck(final int n) { + return new EnableCheck() { + @Override + public String check(JComponent component) { + final LayerManager layerManager = workbenchContext + .getLayerManager(); + String msg; + if (n == 1) { + msg = get("com.vividsolutions.jump.workbench.plugin.At-least-one-layerables-must-exist") + + " (" + + get("org.openjump.core.rasterimage.AddRasterImageLayerWizard.Sextante-Raster-Image") + + ")"; + } else { + msg = getMessage( + "com.vividsolutions.jump.workbench.plugin.At-least-n-layerables-must-exist", + new Object[] { n }) + + " (" + + get("org.openjump.core.rasterimage.AddRasterImageLayerWizard.Sextante-Raster-Image") + + ")"; + ; + } + return (layerManager == null || n > layerManager + .getRasterImageLayers().size()) ? msg : null; + } + }; + } + } ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel