Hi,

I just wrote a little plugin to rename a layer. I know one can rename a
layer by double clicking, but users have asked me for a (context) menu
item ;-)

Some questions came up:

1) Where exactly do I have to put I18N keys? Right now I just put them
in the en, de and jump.properties. Do I have to put an english key in
the other language files?

2) Since I wanted to have a context menu item I'm loading the plugin
from the JUMPConfiguration. Is there a better/more preferred way? I
found the OpenJumpConfiguration, but it does not seem to offer this.

I just wanted to clarify these points before checking anything in.

PS: Once again I attached a patch, and the plugin source which goes to
src/org/openjump/core/ui/plugin/layer/ChangeLayerableNamePlugIn.java

Best regards, Andreas
-- 
l a t / l o n  GmbH
Aennchenstrasse 19           53177 Bonn, Germany
phone ++49 +228 18496-11     fax ++49 +228 1849629
http://www.lat-lon.de        http://www.deegree.org

Index: src/com/vividsolutions/jump/workbench/JUMPConfiguration.java
===================================================================
--- src/com/vividsolutions/jump/workbench/JUMPConfiguration.java        
(Revision 907)
+++ src/com/vividsolutions/jump/workbench/JUMPConfiguration.java        
(Arbeitskopie)
@@ -33,6 +33,8 @@
 
 import com.vividsolutions.jts.util.*;
 import org.openjump.OpenJumpConfiguration;
+import org.openjump.core.ui.plugin.layer.ChangeLayerableNamePlugIn;
+
 import com.vividsolutions.jump.I18N;
 
 import com.vividsolutions.jump.datastore.*;
@@ -237,6 +239,8 @@
     private ImageLayerManagerPlugIn imageLayerManagerPlugIn = new 
ImageLayerManagerPlugIn();
 
        private RefreshDataStoreLayerPlugin refreshDataStoreLayerPlugin = new 
RefreshDataStoreLayerPlugin();
+    
+    private ChangeLayerableNamePlugIn changeLayerableNamePlugIn = new 
ChangeLayerableNamePlugIn();
        
     public void setup(WorkbenchContext workbenchContext) throws Exception {
         configureStyles(workbenchContext);
@@ -384,6 +388,9 @@
                 zoomToLayerPlugIn, zoomToLayerPlugIn.getName(), false, null,
                 zoomToLayerPlugIn.createEnableCheck(workbenchContext));
         featureInstaller.addPopupMenuItem(layerNamePopupMenu,
+                                          changeLayerableNamePlugIn, 
changeLayerableNamePlugIn.getName(), false, null,
+                                          
changeLayerableNamePlugIn.createEnableCheck(workbenchContext));
+        featureInstaller.addPopupMenuItem(layerNamePopupMenu,
                 changeStylesPlugIn, changeStylesPlugIn.getName() + "...",
                 false, GUIUtil.toSmallIcon(changeStylesPlugIn.getIcon()),
                 changeStylesPlugIn.createEnableCheck(workbenchContext));
Index: src/language/jump.properties
===================================================================
--- src/language/jump.properties        (Revision 907)
+++ src/language/jump.properties        (Arbeitskopie)
@@ -434,6 +434,7 @@
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.files                      
                                                                                
                                             = files
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.not-installed              
                                                                                
                                             = not installed.
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.open-MrSID-file            
                                                                                
                                             = open MrSID file
+org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename                   
                                                                                
                                             = Rename Selected Layer
 org.openjump.core.ui.plugin.layer.ChangeSRIDPlugIn.Change-SRID                 
                                                                                
                                             = Change SRID
 
org.openjump.core.ui.plugin.layer.ToggleVisiblityPlugIn.Error-See-Output-Window 
                                                                                
                                            = Error: see output window
 org.openjump.core.ui.plugin.layer.ToggleVisiblityPlugIn.Toggle-Visibility      
                                                                                
                                             = Toggle Visibility
Index: src/language/jump_en.properties
===================================================================
--- src/language/jump_en.properties     (Revision 907)
+++ src/language/jump_en.properties     (Arbeitskopie)
@@ -434,6 +434,7 @@
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.files                      
                                                                                
                                             = files
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.not-installed              
                                                                                
                                             = not installed.
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.open-MrSID-file            
                                                                                
                                             = open MrSID file
+org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename                   
                                                                                
                                             = Rename Selected Layer
 org.openjump.core.ui.plugin.layer.ChangeSRIDPlugIn.Change-SRID                 
                                                                                
                                             = Change SRID
 
org.openjump.core.ui.plugin.layer.ToggleVisiblityPlugIn.Error-See-Output-Window 
                                                                                
                                            = Error: see output window
 org.openjump.core.ui.plugin.layer.ToggleVisiblityPlugIn.Toggle-Visibility      
                                                                                
                                             = Toggle Visibility
Index: src/language/jump_de.properties
===================================================================
--- src/language/jump_de.properties     (Revision 907)
+++ src/language/jump_de.properties     (Arbeitskopie)
@@ -426,6 +426,7 @@
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.files                      
                                                                                
                                             = Dateien
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.not-installed              
                                                                                
                                             = nicht installiert.
 org.openjump.core.ui.plugin.layer.AddSIDLayerPlugIn.open-MrSID-file            
                                                                                
                                             = MrSID Bild \u00F6ffnen
+org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename                   
                                                                                
                                             = Ausgew\u00E4hlte Ebene umbenennen
 org.openjump.core.ui.plugin.layer.ChangeSRIDPlugIn.Change-SRID                 
                                                                                
                                             = SRID \u00E4ndern
 
org.openjump.core.ui.plugin.layer.ToggleVisiblityPlugIn.Error-See-Output-Window 
                                                                                
                                            = Fehler: bitte im Ausgabefenster 
schauen
 org.openjump.core.ui.plugin.layer.ToggleVisiblityPlugIn.Toggle-Visibility      
                                                                                
                                             = Sichtbarkeit Ein-/Ausschalten
package org.openjump.core.ui.plugin.layer;

import javax.swing.JOptionPane;

import com.vividsolutions.jump.I18N;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.model.UndoableCommand;
import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
import com.vividsolutions.jump.workbench.plugin.EnableCheck;
import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.ui.MenuNames;
import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;

/**
 * <code>ChangeLayerableName</code> changes the name of a layer.
 * 
 * @author <a href="mailto:[EMAIL PROTECTED]">Andreas Schmitz</a>
 * @author last edited by: $Author:$
 * 
 * @version $Revision:$, $Date:$
 */
public class ChangeLayerableNamePlugIn extends AbstractPlugIn {

    private MultiEnableCheck enableCheck;

    @Override
    public void initialize( PlugInContext context )
                            throws Exception {
        
        new FeatureInstaller( context.getWorkbenchContext() ).addMainMenuItemWithJava14Fix(
                                                                                            this,
                                                                                            new String[] { MenuNames.LAYER },
                                                                                            getName() + "...", false,
                                                                                            null, enableCheck );
    }

    @Override
    public String getName() {
        return I18N.get( "org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename" );
    }

    @Override
    public boolean execute( PlugInContext context )
                            throws Exception {
        reportNothingToUndoYet( context );
        final Layer layer = context.getSelectedLayer( 0 );
        final String oldName = layer.getName();
        final String newName = (String) JOptionPane.showInputDialog(
                                                                     context.getWorkbenchFrame(),
                                                                     I18N.get( "org.openjump.core.ui.plugin.layer.ChangeLayerableName.Rename" ),
                                                                     getName(), JOptionPane.PLAIN_MESSAGE, null, null,
                                                                     oldName );
        execute( new UndoableCommand( getName() ) {
            @Override
            public void execute() {
                layer.setName( newName );
            }

            @Override
            public void unexecute() {
                layer.setName( oldName );
            }
        }, context );
        return true;
    }

    /**
     * @param workbenchContext
     * @return an enable check
     */
    public EnableCheck createEnableCheck( WorkbenchContext workbenchContext ) {
        if(enableCheck != null) return enableCheck;
        
        EnableCheckFactory enableCheckFactory = new EnableCheckFactory( workbenchContext );
        enableCheck = new MultiEnableCheck();
        enableCheck.add( enableCheckFactory.createWindowWithLayerManagerMustBeActiveCheck() );
        enableCheck.add( enableCheckFactory.createExactlyNLayersMustBeSelectedCheck( 1 ) );
        return enableCheck;
    }

}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to