package com.vividsolutions.jump.workbench.ui.plugin; import java.awt.event.ContainerAdapter; import java.awt.event.ContainerEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import javax.swing.JInternalFrame; import javax.swing.SwingUtilities; import com.vividsolutions.jts.io.ParseException; import com.vividsolutions.jts.io.WKTReader; import com.vividsolutions.jts.util.Assert; import com.vividsolutions.jump.I18N; import com.vividsolutions.jump.feature.BasicFeature; import com.vividsolutions.jump.workbench.model.Layer; import com.vividsolutions.jump.workbench.model.StandardCategoryNames; import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn; import com.vividsolutions.jump.workbench.plugin.PlugInContext; import com.vividsolutions.jump.workbench.ui.GUIUtil; import com.vividsolutions.jump.workbench.ui.TreeLayerNamePanel; public class AddWMSDemoBoxEasterEggPlugIn extends AbstractPlugIn { private Collection panelsEncountered = new ArrayList(); public void initialize(PlugInContext context) throws Exception { context.getWorkbenchFrame().getDesktopPane().addContainerListener(new ContainerAdapter() { public void componentAdded(ContainerEvent e) { if (!(e.getChild() instanceof JInternalFrame)) { return; } installListener((JInternalFrame) e.getChild()); } }); for (Iterator i = Arrays.asList(context.getWorkbenchFrame().getInternalFrames()).iterator(); i.hasNext(); ) { JInternalFrame internalFrame = (JInternalFrame) i.next(); installListener(internalFrame); } } private void installListener(JInternalFrame internalFrame) { final TreeLayerNamePanel panel = (TreeLayerNamePanel) GUIUtil.getDescendantOfClass(TreeLayerNamePanel.class, internalFrame); if ((panel == null) || panelsEncountered.contains(panel)) { //#componentAdded is called twice in JDK 1.3.1_04 for some reason. [Jon Aquino] return; } panelsEncountered.add(panel); panel.getTree().addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e) && (e.getClickCount() == 3)) { Layer layer = panel.getLayerManager().addLayer(StandardCategoryNames.WORKING, I18N.get("ui.plugin.AddWMSDemoBoxEasterEggPlugIn.wms-demo-box"), AddNewLayerPlugIn.createBlankFeatureCollection()); BasicFeature feature = new BasicFeature(layer.getFeatureCollectionWrapper() .getFeatureSchema()); try { feature.setGeometry(new WKTReader().read( "LINESTRING (1455960 703340, 1455960 701960, 1457540 701960, 1457540 703340, 1455960 703340)")); } catch (ParseException x) { Assert.shouldNeverReachHere(); } layer.getFeatureCollectionWrapper().add(feature); } } }); } }