+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.argeo.gis.ui</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.pde.PluginNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
+++ /dev/null
-#Sat Feb 26 14:12:16 CET 2011
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+++ /dev/null
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Ui
-Bundle-SymbolicName: org.argeo.gis.ui;singleton:=true
-Bundle-Version: 0.3.4.SNAPSHOT
-Bundle-Activator: org.argeo.gis.ui.GisUiPlugin
-Bundle-Vendor: Argeo
-Require-Bundle: org.eclipse.ui;resolution:=optional,
- org.eclipse.rap.ui;resolution:=optional,
- org.eclipse.core.runtime
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Bundle-ActivationPolicy: lazy
-Import-Package: javax.jcr;version="2.0.0",
- javax.jcr.nodetype;version="2.0.0",
- org.apache.commons.logging;version="1.1.1",
- org.argeo,
- org.argeo.eclipse.spring,
- org.argeo.eclipse.ui,
- org.argeo.eclipse.ui.dialogs,
- org.argeo.eclipse.ui.jcr,
- org.argeo.geotools.jcr,
- org.argeo.jcr,
- org.argeo.jcr.gis,
- org.eclipse.ui.forms,
- org.eclipse.ui.forms.editor,
- org.eclipse.ui.forms.widgets,
- org.geotools.data,
- org.geotools.geometry.jts,
- org.geotools.map,
- org.geotools.map.event,
- org.geotools.styling,
- org.opengis.feature.simple,
- org.opengis.feature.type,
- org.postgresql;resolution:=optional
-Export-Package: org.argeo.gis.ui,
- org.argeo.gis.ui.commands,
- org.argeo.gis.ui.editors,
- org.argeo.gis.ui.views
+++ /dev/null
-source.. = src/main/java/
-output.. = target/classes/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- js_lib/,\
- icons/
+++ /dev/null
-argeo.osgi.start=\
-org.springframework.osgi.extender,\
-com.springsource.javax.servlet,\
-org.eclipse.core.runtime,\
-org.eclipse.equinox.common,\
-org.eclipse.equinox.http.jetty,\
-org.eclipse.equinox.http.registry,\
-org.eclipse.equinox.launcher,\
-org.mortbay.jetty.server,\
-org.argeo.security.equinox,\
-org.argeo.security.manager.ldap,\
-org.argeo.security.services,\
-org.argeo.server.ads.server,\
-org.argeo.node.repo.jackrabbit,\
-org.argeo.gis.ui.rap.openlayers,\
-org.argeo.slc.gis.position.backend,\
-
-eclipse.ignoreApp=true
-osgi.noShutdown=true
-
-org.argeo.security.ui.initialPerspective=org.argeo.gis.ui.perspective
-
-log4j.configuration=file:../../log4j.properties
-
-org.eclipse.equinox.http.jetty.log.stderr.threshold=debug
-org.osgi.service.http.port=9090
+++ /dev/null
-log4j.rootLogger=INFO, console
-
-## Levels
-log4j.logger.org.argeo=DEBUG
-
-log4j.logger.org.apache.catalina=INFO
-log4j.logger.org.apache.coyote=INFO
-log4j.logger.org.apache.tomcat=INFO
-
-log4j.logger.org.apache.directory.server=INFO
-log4j.logger.org.apache.directory.server.core.partition=ERROR
-log4j.logger.org.apache.directory.server.core.schema.bootstrap.BootstrapAttributeTypeRegistry=ERROR
-
-log4j.logger.org.apache.jackrabbit=INFO
-log4j.logger.org.apache.jackrabbit.core.query.lucene=ERROR
-
-## Appenders
-# console is set to be a ConsoleAppender.
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-
-# console uses PatternLayout.
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern= %-5p %d{ISO8601} %m - %c - [%t]%n
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.argeo.commons.gis</groupId>
- <version>0.3.4-SNAPSHOT</version>
- <artifactId>plugins</artifactId>
- <relativePath>..</relativePath>
- </parent>
- <artifactId>org.argeo.gis.ui</artifactId>
- <name>Commons GIS UI</name>
- <packaging>jar</packaging>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- <dependencies>
- <dependency>
- <groupId>org.argeo.commons.gis</groupId>
- <artifactId>org.argeo.gis.geotools</artifactId>
- <version>0.3.4-SNAPSHOT</version>
- </dependency>
-
- <!-- Commons -->
- <dependency>
- <groupId>org.argeo.commons.basic</groupId>
- <artifactId>org.argeo.basic.nodeps</artifactId>
- <version>0.3.4-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.argeo.commons.eclipse</groupId>
- <artifactId>org.argeo.eclipse.ui</artifactId>
- <version>0.3.4-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.argeo.commons.eclipse</groupId>
- <artifactId>org.argeo.eclipse.ui.jcr</artifactId>
- <version>0.3.4-SNAPSHOT</version>
- </dependency>
-
- <!-- RCP only dependency, needed at compile time -->
- <dependency>
- <groupId>org.argeo.commons.eclipse</groupId>
- <artifactId>org.argeo.eclipse.dep.rcp</artifactId>
- <version>0.3.4-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
-
- <!-- Logging -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>com.springsource.slf4j.org.apache.commons.logging
- </artifactId>
- </dependency>
- </dependencies>
-</project>
+++ /dev/null
-package org.argeo.gis.ui;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.RepositoryException;
-
-import org.argeo.ArgeoException;
-import org.argeo.geotools.jcr.GeoJcrMapper;
-import org.argeo.jcr.CollectionNodeIterator;
-import org.argeo.jcr.gis.GisTypes;
-import org.eclipse.swt.widgets.Composite;
-import org.geotools.data.FeatureSource;
-import org.geotools.geometry.jts.ReferencedEnvelope;
-import org.opengis.feature.simple.SimpleFeature;
-import org.opengis.feature.simple.SimpleFeatureType;
-
-/**
- * Logic of a map viewer which is independent from a particular map display
- * implementation.
- */
-public abstract class AbstractMapViewer implements MapViewer {
- private final Node context;
- private final GeoJcrMapper geoJcrMapper;
-
- private Composite control;
- private Map<String, Set<String>> selected = new HashMap<String, Set<String>>();
-
- private Set<MapViewerListener> listeners = Collections
- .synchronizedSet(new HashSet<MapViewerListener>());
-
- protected abstract void addFeatureSource(String layerId,
- FeatureSource<SimpleFeatureType, SimpleFeature> featureSource,
- Object style);
-
- public AbstractMapViewer(Node context, GeoJcrMapper geoJcrMapper) {
- super();
- this.context = context;
- this.geoJcrMapper = geoJcrMapper;
- }
-
- public void addLayer(Node layer, Object style) {
- try {
- if (layer.isNodeType(GisTypes.GIS_FEATURE_SOURCE)) {
- addFeatureSource(layer.getPath(),
- geoJcrMapper.getFeatureSource(layer), style);
- } else {
- throw new ArgeoException("Unsupported layer " + layer);
- }
- } catch (Exception e) {
- throw new ArgeoException("Cannot add layer " + layer, e);
- }
-
- }
-
- public NodeIterator getSelectedFeatures() {
- try {
- List<Node> nodes = new ArrayList<Node>();
- for (String layerId : selected.keySet()) {
- Set<String> featureIds = selected.get(layerId);
- Node featureSource = context.getSession().getNode(layerId);
- for (String featureId : featureIds) {
- Node featureNode = geoJcrMapper.getFeatureNode(
- featureSource, featureId);
- nodes.add(featureNode);
- }
- }
- return new CollectionNodeIterator(nodes);
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot get selected features from "
- + context, e);
- }
- }
-
- public void addMapViewerListener(MapViewerListener listener) {
- listeners.add(listener);
- }
-
- public void removeMapViewerListener(MapViewerListener listener) {
- listeners.remove(listener);
- }
-
- protected Node getContext() {
- return context;
- }
-
- protected Map<String, Set<String>> getSelected() {
- return selected;
- }
-
- protected Set<MapViewerListener> getListeners() {
- return listeners;
- }
-
- protected void setControl(Composite control) {
- this.control = control;
- }
-
- public Composite getControl() {
- return control;
- }
-
- public GeoJcrMapper getGeoJcrMapper() {
- return geoJcrMapper;
- }
-
-}
+++ /dev/null
-package org.argeo.gis.ui;
-
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class GisUiPlugin extends AbstractUIPlugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "org.argeo.gis.ui"; //$NON-NLS-1$
-
- // The shared instance
- private static GisUiPlugin plugin;
-
- /**
- * The constructor
- */
- public GisUiPlugin() {
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
- */
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- }
-
- /*
- * (non-Javadoc)
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
- */
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static GisUiPlugin getDefault() {
- return plugin;
- }
-
-}
+++ /dev/null
-package org.argeo.gis.ui;
-
-import javax.jcr.Node;
-
-public interface MapContextProvider {
- //public MapContext getMapContext();
-
- public void addLayer(Node layer);
-
- public void featureSelected(String layerId, String featureId);
- public void featureUnselected(String layerId, String featureId);
-}
+++ /dev/null
-package org.argeo.gis.ui;
-
-import javax.jcr.Node;
-
-import org.eclipse.swt.widgets.Composite;
-
-public interface MapControlCreator {
- /** Creates a map control based on this parent and this context */
- public MapViewer createMapControl(Node context, Composite parent);
-}
+++ /dev/null
-package org.argeo.gis.ui;
-
-import java.util.Collection;
-
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-
-import org.argeo.geotools.jcr.GeoJcrMapper;
-import org.eclipse.swt.widgets.Composite;
-import org.geotools.geometry.jts.ReferencedEnvelope;
-
-/** Viewer for a map, relying on JCR. */
-public interface MapViewer {
- public void addLayer(Node layer, Object style);
-
- public void addLayer(String layerId, Collection<?> collection, Object style);
-
- public NodeIterator getSelectedFeatures();
-
- public Composite getControl();
-
- public void addMapViewerListener(MapViewerListener listener);
-
- public void removeMapViewerListener(MapViewerListener listener);
-
- public void setAreaOfInterest(ReferencedEnvelope areaOfInterest);
-
- //public void setCoordinateReferenceSystem(String crs);
-
- public void setStyle(String layerId, Object style);
-
- public GeoJcrMapper getGeoJcrMapper();
-}
+++ /dev/null
-package org.argeo.gis.ui;
-
-public interface MapViewerListener {
- public void featureSelected(String layerId, String featureId);
-
- public void featureUnselected(String layerId, String featureId);
-}
+++ /dev/null
-package org.argeo.gis.ui.commands;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.argeo.ArgeoException;
-import org.argeo.eclipse.ui.AbstractTreeContentProvider;
-import org.argeo.eclipse.ui.TreeParent;
-import org.argeo.eclipse.ui.dialogs.Error;
-import org.argeo.geotools.jcr.GeoJcrMapper;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.geotools.data.FeatureSource;
-import org.opengis.feature.simple.SimpleFeature;
-import org.opengis.feature.simple.SimpleFeatureType;
-
-public class AddFeatureSources extends AbstractHandler {
- private GeoJcrMapper geoJcrMapper;
- private Session session;
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- try {
- FeatureSourceChooserDialog dialog = new FeatureSourceChooserDialog(
- HandlerUtil.getActiveShell(event));
- if (dialog.open() == Dialog.OK) {
- Map<String, List<FeatureSource<SimpleFeatureType, SimpleFeature>>> featureSources = dialog
- .getFeatureSources();
- for (String alias : featureSources.keySet()) {
- for (FeatureSource<SimpleFeatureType, SimpleFeature> fs : featureSources
- .get(alias)) {
- Node fsNode = geoJcrMapper.getFeatureSourceNode(
- session, alias, fs);
- try {
- fsNode.getSession().save();
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot save " + fsNode, e);
- }
- }
- }
- }
- } catch (Exception e) {
- Error.show("Cannot add new feature source", e);
- }
- return null;
- }
-
- public void setGeoJcrMapper(GeoJcrMapper geoJcrMapper) {
- this.geoJcrMapper = geoJcrMapper;
- }
-
- public void setSession(Session session) {
- this.session = session;
- }
-
- class FeatureSourceChooserDialog extends TitleAreaDialog {
- private TreeViewer viewer;
- private Map<String, List<FeatureSource<SimpleFeatureType, SimpleFeature>>> featureSources = new HashMap<String, List<FeatureSource<SimpleFeatureType, SimpleFeature>>>();
-
- public FeatureSourceChooserDialog(Shell parentShell) {
- super(parentShell);
- }
-
- protected Point getInitialSize() {
- return new Point(300, 400);
- }
-
- protected Control createDialogArea(Composite parent) {
- setTitle("Feature Source");
- setMessage("Select or or many feature sources to register");
- Composite dialogarea = (Composite) super.createDialogArea(parent);
- Composite composite = new Composite(dialogarea, SWT.NONE);
- composite.setLayout(new GridLayout(1, false));
- composite
- .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
-
- viewer = new TreeViewer(composite);
- viewer.getTree().setLayoutData(
- new GridData(SWT.FILL, SWT.FILL, true, true));
- viewer.setContentProvider(new DataStoreContentProvider());
- viewer.setLabelProvider(new DataStoreLabelProvider());
- viewer.setInput(geoJcrMapper.getPossibleFeatureSources());
- parent.pack();
- return composite;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- protected void okPressed() {
- Iterator<Object> it = ((IStructuredSelection) viewer.getSelection())
- .iterator();
- while (it.hasNext()) {
- Object obj = it.next();
- if (obj instanceof FeatureSourceNode) {
- FeatureSourceNode fsn = (FeatureSourceNode) obj;
- String alias = fsn.getDataStoreAlias();
- if (!featureSources.containsKey(alias))
- featureSources
- .put(alias,
- new ArrayList<FeatureSource<SimpleFeatureType, SimpleFeature>>());
- featureSources.get(alias).add(fsn.getFeatureSource());
- } else {
- // data store node
- String alias = obj.toString();
- featureSources.put(alias, geoJcrMapper
- .getPossibleFeatureSources().get(alias));
- }
- }
- super.okPressed();
- }
-
- public Map<String, List<FeatureSource<SimpleFeatureType, SimpleFeature>>> getFeatureSources() {
- return featureSources;
- }
- }
-
- private class DataStoreContentProvider extends AbstractTreeContentProvider {
-
- @SuppressWarnings("unchecked")
- public Object[] getElements(Object inputElement) {
- List<TreeParent> dataStoreNodes = new ArrayList<TreeParent>();
- Map<String, List<FeatureSource<SimpleFeatureType, SimpleFeature>>> featureSources = (Map<String, List<FeatureSource<SimpleFeatureType, SimpleFeature>>>) inputElement;
- for (String alias : featureSources.keySet()) {
- TreeParent dataStoreNode = new TreeParent(alias);
- for (FeatureSource<SimpleFeatureType, SimpleFeature> featureSource : featureSources
- .get(alias)) {
- dataStoreNode.addChild(new FeatureSourceNode(alias,
- featureSource));
- }
- dataStoreNodes.add(dataStoreNode);
- }
- return dataStoreNodes.toArray();
- }
-
- }
-
- private class DataStoreLabelProvider extends LabelProvider {
-
- @Override
- public String getText(Object element) {
- return super.getText(element);
- }
-
- }
-
- private class FeatureSourceNode extends TreeParent {
- private final String dataStoreAlias;
- private final FeatureSource<SimpleFeatureType, SimpleFeature> featureSource;
-
- public FeatureSourceNode(String dataStoreAlias,
- FeatureSource<SimpleFeatureType, SimpleFeature> featureSource) {
- super(featureSource.getName().toString());
- this.dataStoreAlias = dataStoreAlias;
- this.featureSource = featureSource;
- }
-
- public String getDataStoreAlias() {
- return dataStoreAlias;
- }
-
- public FeatureSource<SimpleFeatureType, SimpleFeature> getFeatureSource() {
- return featureSource;
- }
-
- }
-
-}
+++ /dev/null
-package org.argeo.gis.ui.commands;
-
-import javax.jcr.Session;
-
-import org.argeo.eclipse.ui.dialogs.Error;
-import org.argeo.gis.ui.editors.MapEditorInput;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/** Opens a new map editor */
-public class AddLayer extends AbstractHandler {
- private String editorId;
- private Session session;
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- try {
- HandlerUtil
- .getActiveWorkbenchWindow(event)
- .getActivePage()
- .openEditor(new MapEditorInput(session.getRootNode()),
- editorId);
- } catch (Exception e) {
- Error.show("Cannot open editor", e);
- }
- return null;
- }
-
- public void setEditorId(String editorId) {
- this.editorId = editorId;
- }
-
-}
+++ /dev/null
-package org.argeo.gis.ui.commands;
-
-import javax.jcr.Session;
-
-import org.argeo.eclipse.ui.dialogs.Error;
-import org.argeo.gis.ui.editors.MapEditorInput;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/** Opens a new map editor */
-public class NewMap extends AbstractHandler {
- private Session session;
- private String editorId;
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- try {
- HandlerUtil
- .getActiveWorkbenchWindow(event)
- .getActivePage()
- .openEditor(new MapEditorInput(session.getRootNode()),
- editorId);
- } catch (Exception e) {
- Error.show("Cannot open editor", e);
- }
- return null;
- }
-
- public void setEditorId(String editorId) {
- this.editorId = editorId;
- }
-
- public void setSession(Session session) {
- this.session = session;
- }
-
-}
+++ /dev/null
-package org.argeo.gis.ui.data;
-
-import java.io.IOException;
-
-import org.argeo.ArgeoException;
-import org.argeo.eclipse.ui.TreeParent;
-import org.geotools.data.DataStore;
-import org.opengis.feature.type.Name;
-
-public class DataStoreNode extends TreeParent {
- private DataStore dataStore;
-
- public DataStoreNode(DataStore dataStore) {
- super(dataStore.getInfo().getTitle() != null ? dataStore.getInfo()
- .getTitle() : dataStore.toString());
- this.dataStore = dataStore;
- try {
- for (Name name : dataStore.getNames()) {
- addChild(new FeatureNode(dataStore, name));
- }
- } catch (IOException e) {
- throw new ArgeoException("Cannot scan data store", e);
- }
- }
-
- public DataStore getDataStore() {
- return dataStore;
- }
-
-}
\ No newline at end of file
+++ /dev/null
-package org.argeo.gis.ui.data;
-
-import java.io.IOException;
-
-import org.argeo.ArgeoException;
-import org.argeo.eclipse.ui.TreeParent;
-import org.geotools.data.DataStore;
-import org.geotools.data.FeatureSource;
-import org.opengis.feature.simple.SimpleFeature;
-import org.opengis.feature.simple.SimpleFeatureType;
-import org.opengis.feature.type.Name;
-
-public class FeatureNode extends TreeParent {
- private final DataStore dataStore;
- private final Name featureName;
-
- public FeatureNode(DataStore dataStore, Name name) {
- super(name.toString());
- this.dataStore = dataStore;
- this.featureName = name;
- }
-
- public FeatureSource<SimpleFeatureType, SimpleFeature> getFeatureSource() {
- try {
- return dataStore.getFeatureSource(featureName);
- } catch (IOException e) {
- throw new ArgeoException("Cannot get feature " + featureName
- + " of " + dataStore, e);
- }
- }
-
- public DataStore getDataStore() {
- return dataStore;
- }
-
- public Name getFeatureName() {
- return featureName;
- }
-
-}
\ No newline at end of file
+++ /dev/null
-package org.argeo.gis.ui.editors;
-
-import javax.jcr.Node;
-
-import org.argeo.gis.ui.MapControlCreator;
-import org.argeo.gis.ui.MapViewer;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.part.EditorPart;
-
-/** A generic map editor */
-public class DefaultMapEditor extends EditorPart {
- private Node context;
- private MapViewer mapViewer;
- private MapControlCreator mapControlCreator;
-
- @Override
- public void init(IEditorSite site, IEditorInput input)
- throws PartInitException {
- if (input instanceof MapEditorInput) {
- // mapContext = ((MapEditorInput) input).getMapContext();
- context = ((MapEditorInput) input).getContext();
- setSite(site);
- setInput(input);
- setPartName(input.getName());
- } else {
- throw new PartInitException("Support only " + MapEditorInput.class
- + " inputs");
- }
- }
-
- @Override
- public void createPartControl(Composite parent) {
- Composite mapArea = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- mapArea.setLayout(layout);
- mapViewer = mapControlCreator.createMapControl(context, mapArea);
- mapViewer.getControl().setLayoutData(
- new GridData(SWT.FILL, SWT.FILL, true, true));
- }
-
- public MapViewer getMapViewer() {
- return mapViewer;
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- }
-
- @Override
- public void doSaveAs() {
- }
-
- @Override
- public boolean isDirty() {
- return false;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Override
- public void setFocus() {
- // LayersView layersView = (LayersView) getEditorSite()
- // .getWorkbenchWindow().getActivePage().findView(LayersView.ID);
- // layersView.setMapContext(getMapContext());
- mapViewer.getControl().setFocus();
- }
-
- public void featureSelected(String layerId, String featureId) {
- // TODO Auto-generated method stub
-
- }
-
- public void featureUnselected(String layerId, String featureId) {
- // TODO Auto-generated method stub
-
- }
-
- public void setMapControlCreator(MapControlCreator mapControlCreator) {
- this.mapControlCreator = mapControlCreator;
- }
-
-}
+++ /dev/null
-package org.argeo.gis.ui.editors;
-
-import javax.jcr.Node;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IPersistableElement;
-
-public class MapEditorInput implements IEditorInput {
- private final Node context;
-
- public MapEditorInput(Node mapContext) {
- this.context = mapContext;
- }
-
- public Node getContext() {
- return context;
- }
-
- public String getName() {
- return context.toString();
- }
-
- public String getToolTipText() {
- return context.toString();
- }
-
- @SuppressWarnings("rawtypes")
- public Object getAdapter(Class adapter) {
- if (Node.class.isAssignableFrom(adapter))
- return context;
- return null;
- }
-
- public boolean exists() {
- return false;
- }
-
- public ImageDescriptor getImageDescriptor() {
- return null;
- }
-
- public IPersistableElement getPersistable() {
- return null;
- }
-
-}
+++ /dev/null
-package org.argeo.gis.ui.editors;
-
-import javax.jcr.Node;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.gis.ui.MapControlCreator;
-import org.argeo.gis.ui.MapViewer;
-import org.argeo.gis.ui.MapViewerListener;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.AbstractFormPart;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.editor.FormPage;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-
-/** A form editor page to edit geographical data. */
-public class MapFormPage extends FormPage {
- private final static Log log = LogFactory.getLog(MapFormPage.class);
-
- private Node context;
- private MapViewer mapViewer;
- private MapControlCreator mapControlCreator;
-
- public MapFormPage(FormEditor editor, String id, String title,
- Node context, MapControlCreator mapControlCreator) {
- super(editor, id, title);
- this.context = context;
- this.mapControlCreator = mapControlCreator;
- }
-
- @Override
- protected void createFormContent(IManagedForm managedForm) {
- Composite parent = managedForm.getForm().getBody();
- parent.setLayout(new FillLayout());
-
- FormToolkit tk = managedForm.getToolkit();
-
- Composite mapArea = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- mapArea.setLayout(layout);
- mapViewer = mapControlCreator.createMapControl(context, mapArea);
- mapViewer.getControl().setLayoutData(
- new GridData(SWT.FILL, SWT.FILL, true, true));
-
- // form part
- MapFormPart mapFormPart = new MapFormPart();
- getManagedForm().addPart(mapFormPart);
- mapViewer.addMapViewerListener(mapFormPart);
-
- tk.adapt(mapViewer.getControl());
- }
-
- public void setFocus() {
- super.setFocus();
- mapViewer.getControl().setFocus();
- }
-
- public MapViewer getMapViewer() {
- return mapViewer;
- }
-
- private static class MapFormPart extends AbstractFormPart implements
- MapViewerListener {
-
- public void featureSelected(String layerId, String featureId) {
- if (log.isDebugEnabled())
- log.debug("Selected feature '" + featureId + "' of layer '"
- + layerId + "'");
- markDirty();
- }
-
- public void featureUnselected(String layerId, String featureId) {
- if (log.isDebugEnabled())
- log.debug("Unselected feature '" + featureId + "' of layer '"
- + layerId + "'");
-
- markDirty();
- }
-
- }
-}
+++ /dev/null
-package org.argeo.gis.ui.views;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.argeo.eclipse.ui.AbstractTreeContentProvider;
-import org.argeo.gis.ui.data.DataStoreNode;
-import org.argeo.gis.ui.data.FeatureNode;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-import org.geotools.data.DataStore;
-
-public class DataStoresView extends ViewPart implements IDoubleClickListener {
- private TreeViewer viewer;
-
- private List<DataStore> dataStores;
-
- @Override
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(new DataStoreContentProvider());
- viewer.setLabelProvider(new DataStoreLabelProvider());
- viewer.setInput(getViewSite());
- viewer.addDoubleClickListener(this);
- }
-
- public void doubleClick(DoubleClickEvent event) {
- if (!event.getSelection().isEmpty()) {
- Iterator<?> it = ((IStructuredSelection) event.getSelection())
- .iterator();
- while (it.hasNext()) {
- Object obj = it.next();
- if (obj instanceof FeatureNode) {
-// FeatureNode featureNode = (FeatureNode) obj;
-// FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = featureNode
-// .getFeatureSource();
-// IEditorPart ed = getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
-// if(ed instanceof DefaultMapEditor){
-//// ((DefaultMapEditor)ed).addLayer(featureSource);
-// }
- }
- }
- }
-
- }
-
- @Override
- public void setFocus() {
- viewer.getTree().setFocus();
- }
-
- public void refresh() {
- viewer.refresh();
- }
-
- public void setDataStores(List<DataStore> dataStores) {
- this.dataStores = dataStores;
- }
-
- private class DataStoreContentProvider extends AbstractTreeContentProvider {
-
- public Object[] getElements(Object inputElement) {
- List<DataStoreNode> dataStoreNodes = new ArrayList<DataStoreNode>();
- // it is better to deal with OSGi reference using and iterator
- Iterator<DataStore> it = dataStores.iterator();
- while (it.hasNext())
- dataStoreNodes.add(new DataStoreNode(it.next()));
- return dataStoreNodes.toArray();
- }
-
- }
-
- private class DataStoreLabelProvider extends LabelProvider {
-
- @Override
- public String getText(Object element) {
- return super.getText(element);
- }
-
- }
-}
+++ /dev/null
-package org.argeo.gis.ui.views;
-
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-
-import org.argeo.ArgeoException;
-import org.argeo.eclipse.ui.jcr.JcrImages;
-import org.argeo.eclipse.ui.jcr.SimpleNodeContentProvider;
-import org.argeo.gis.ui.editors.DefaultMapEditor;
-import org.argeo.gis.ui.editors.MapFormPage;
-import org.argeo.jcr.gis.GisTypes;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.forms.editor.FormEditor;
-import org.eclipse.ui.forms.editor.IFormPage;
-import org.eclipse.ui.part.ViewPart;
-
-public class FeatureSourcesView extends ViewPart implements
- IDoubleClickListener {
- private String dataStoresBasePath = "/gis/dataStores";
-
- private Session session;
-
- private TreeViewer viewer;
-
- @Override
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- String[] basePaths = { dataStoresBasePath };
- SimpleNodeContentProvider sncp = new SimpleNodeContentProvider(session,
- basePaths);
- sncp.setMkdirs(true);
- viewer.setContentProvider(sncp);
- viewer.setLabelProvider(new MapsLabelProvider());
- viewer.setInput(getViewSite());
- viewer.addDoubleClickListener(this);
- }
-
- public void doubleClick(DoubleClickEvent event) {
- if (!event.getSelection().isEmpty()) {
- Object obj = ((IStructuredSelection) event.getSelection())
- .getFirstElement();
- if (obj instanceof Node) {
- Node node = (Node) obj;
- try {
- if (!node.isNodeType(GisTypes.GIS_FEATURE_SOURCE))
- return;
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot check type of " + node, e);
- }
- IEditorPart ed = getSite().getWorkbenchWindow().getActivePage()
- .getActiveEditor();
- if (ed instanceof DefaultMapEditor) {
- ((DefaultMapEditor) ed).getMapViewer().addLayer(node, null);
- } else if (ed instanceof FormEditor) {
- IFormPage activePage = ((FormEditor) ed)
- .getActivePageInstance();
- if (activePage instanceof MapFormPage) {
- ((MapFormPage) activePage).getMapViewer().addLayer(
- node, null);
- }
- }
- }
-
- }
-
- }
-
- @Override
- public void setFocus() {
- viewer.getTree().setFocus();
- }
-
- public void refresh() {
- viewer.refresh();
- }
-
- public void setSession(Session session) {
- this.session = session;
- }
-
- private class MapsLabelProvider extends ColumnLabelProvider {
-
- @Override
- public String getText(Object element) {
- try {
- if (element instanceof Node) {
- Node node = (Node) element;
- return node.getName();
- }
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot get text", e);
- }
- return super.getText(element);
- }
-
- @Override
- public Image getImage(Object element) {
- try {
- if (element instanceof Node) {
- Node node = (Node) element;
- if (node.isNodeType(GisTypes.GIS_FEATURE_SOURCE))
- return JcrImages.BINARY;
- else if (node.isNodeType(GisTypes.GIS_DATA_STORE))
- return JcrImages.NODE;
- return JcrImages.FOLDER;
- }
- } catch (RepositoryException e) {
- throw new ArgeoException("Cannot get text", e);
- }
- return super.getImage(element);
- }
-
- }
-}
+++ /dev/null
-package org.argeo.gis.ui.views;
-
-import org.argeo.eclipse.ui.TreeParent;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IViewSite;
-import org.eclipse.ui.part.ViewPart;
-import org.geotools.map.MapContext;
-import org.geotools.map.MapLayer;
-import org.geotools.map.event.MapLayerListEvent;
-import org.geotools.map.event.MapLayerListListener;
-
-public class LayersView extends ViewPart implements MapLayerListListener {
- private TreeViewer viewer;
-
- private MapContext mapContext;
-
- @Override
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(new MapContextContentProvider());
- viewer.setLabelProvider(new MapContextLabelProvider());
- viewer.setInput(getViewSite());
- }
-
- public void setMapContext(MapContext mapContext) {
- viewer.setInput(mapContext);
- if (this.mapContext != null) {
- this.mapContext.removeMapLayerListListener(this);
- }
- this.mapContext = mapContext;
- this.mapContext.addMapLayerListListener(this);
- }
-
- /*
- * MAP LAYER LIST LISTENER
- */
- public void layerAdded(MapLayerListEvent event) {
- viewer.refresh();
- }
-
- public void layerRemoved(MapLayerListEvent event) {
- viewer.refresh();
- }
-
- public void layerChanged(MapLayerListEvent event) {
- viewer.refresh();
- }
-
- public void layerMoved(MapLayerListEvent event) {
- viewer.refresh();
- }
-
- /*
- * VIEW
- */
- @Override
- public void setFocus() {
- viewer.getTree().setFocus();
- }
-
- public void refresh() {
- viewer.refresh();
- }
-
- private class MapContextContentProvider implements ITreeContentProvider {
-
- public void dispose() {
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- }
-
- public Object[] getElements(Object inputElement) {
- if (inputElement instanceof MapContext)
- return new Object[] { new MapContextNode(
- (MapContext) inputElement) };
- else if (inputElement instanceof IViewSite)
- return new Object[] {};
- else
- return getChildren(inputElement);
- }
-
- public Object[] getChildren(Object element) {
- if (element instanceof MapContextNode) {
- MapContextNode mapContextNode = (MapContextNode) element;
- return mapContextNode.getMapContext().getLayers();
- } else if (element instanceof MapLayer) {
- //MapLayer mapLayer = (MapLayer) element;
-
- } else if (element instanceof TreeParent) {
- return ((TreeParent) element).getChildren();
- }
- return new Object[0];
- }
-
- public Object getParent(Object element) {
- if (element instanceof TreeParent) {
- return ((TreeParent) element).getParent();
- }
- return null;
- }
-
- public boolean hasChildren(Object element) {
- if (element instanceof MapContextNode) {
- return true;
- } else if (element instanceof TreeParent) {
- return ((TreeParent) element).hasChildren();
- } else if (element instanceof MapLayer) {
- return false;
- }
- return false;
- }
-
- }
-
- private class MapContextLabelProvider extends LabelProvider {
-
- @Override
- public String getText(Object element) {
- if (element instanceof MapLayer) {
- MapLayer mapLayer = (MapLayer) element;
- String title = mapLayer.getTitle();
- if (title == null || title.trim().equals(""))
- title = mapLayer.toString();
- return title;
- }
- return super.getText(element);
- }
-
- }
-
- private class MapContextNode extends TreeParent {
- private MapContext mapContext;
-
- public MapContextNode(MapContext mapContext) {
- super("Map Context");
- this.mapContext = mapContext;
- }
-
- public MapContext getMapContext() {
- return mapContext;
- }
-
- }
-}
+++ /dev/null
-package org.argeo.gis.ui.views;
-
-import javax.jcr.Node;
-import javax.jcr.Session;
-
-import org.argeo.eclipse.ui.jcr.SimpleNodeContentProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-public class MapsView extends ViewPart implements IDoubleClickListener {
- private String mapsBasePath = "/gis/maps";
-
- private Session session;
-
- private TreeViewer viewer;
-
- @Override
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- String[] basePaths = { mapsBasePath };
- viewer.setContentProvider(new SimpleNodeContentProvider(session,
- basePaths));
- viewer.setLabelProvider(new MapsLabelProvider());
- viewer.setInput(getViewSite());
- viewer.addDoubleClickListener(this);
- }
-
- public void doubleClick(DoubleClickEvent event) {
- if (!event.getSelection().isEmpty()) {
- Object obj = ((IStructuredSelection) event.getSelection())
- .getFirstElement();
- if (obj instanceof Node) {
- //Node node = (Node) obj;
- }
-
- }
-
- }
-
- @Override
- public void setFocus() {
- viewer.getTree().setFocus();
- }
-
- public void refresh() {
- viewer.refresh();
- }
-
- private class MapsLabelProvider extends LabelProvider {
-
- @Override
- public String getText(Object element) {
- return super.getText(element);
- }
-
- }
-}