Revision: 4999 http://sourceforge.net/p/jump-pilot/code/4999 Author: edso Date: 2016-07-30 19:36:56 +0000 (Sat, 30 Jul 2016) Log Message: ----------- some refactoring added list of selected layerables to dialog context of SaveWizPlugin
Modified Paths: -------------- core/trunk/src/org/openjump/core/ui/io/file/DataSourceFileLayerSaver.java core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStorePanel.java core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java core/trunk/src/org/openjump/core/ui/plugin/file/save/SelectFilePanel.java Added Paths: ----------- core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveToFileWizard.java Removed Paths: ------------- core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveFileWizard.java Modified: core/trunk/src/org/openjump/core/ui/io/file/DataSourceFileLayerSaver.java =================================================================== --- core/trunk/src/org/openjump/core/ui/io/file/DataSourceFileLayerSaver.java 2016-07-30 16:36:38 UTC (rev 4998) +++ core/trunk/src/org/openjump/core/ui/io/file/DataSourceFileLayerSaver.java 2016-07-30 19:36:56 UTC (rev 4999) @@ -9,33 +9,29 @@ import org.openjump.util.UriUtil; import com.vividsolutions.jump.feature.FeatureCollection; -import com.vividsolutions.jump.io.DriverProperties; import com.vividsolutions.jump.io.datasource.Connection; import com.vividsolutions.jump.io.datasource.DataSource; import com.vividsolutions.jump.io.datasource.DataSourceQuery; import com.vividsolutions.jump.task.TaskMonitor; import com.vividsolutions.jump.util.LangUtil; -import com.vividsolutions.jump.workbench.WorkbenchContext; import com.vividsolutions.jump.workbench.datasource.FileDataSourceQueryChooser; import com.vividsolutions.jump.workbench.model.Layer; -import com.vividsolutions.jump.workbench.plugin.PlugInContext; -import com.vividsolutions.jump.workbench.ui.GUIUtil; public class DataSourceFileLayerSaver extends AbstractFileLayerSaver { private Class dataSourceClass; - private PlugInContext context; + private Layer layer; - public DataSourceFileLayerSaver(WorkbenchContext workbenchContext, + public DataSourceFileLayerSaver(Layer layer, Class dataSourceClass, String description, List<String> extensions) { super(description, extensions); - this.context = workbenchContext.createPlugInContext(); this.dataSourceClass = dataSourceClass; + this.layer = layer; } - public DataSourceFileLayerSaver(WorkbenchContext workbenchContext, + public DataSourceFileLayerSaver(Layer layer, FileDataSourceQueryChooser fdsqc) { - this(workbenchContext, fdsqc.getDataSourceClass(), fdsqc.getDescription(), + this(layer, fdsqc.getDataSourceClass(), fdsqc.getDescription(), Arrays.asList(fdsqc.getExtensions())); } @@ -43,7 +39,6 @@ public boolean write(TaskMonitor monitor, URI uri, Map<String, Object> options) throws Exception { DataSource dataSource = (DataSource) LangUtil.newInstance(dataSourceClass); - Layer layer = context.getSelectedLayer(0); FeatureCollection fc = layer.getFeatureCollectionWrapper(); monitor.allowCancellationRequests(); Modified: core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStorePanel.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStorePanel.java 2016-07-30 16:36:38 UTC (rev 4998) +++ core/trunk/src/org/openjump/core/ui/plugin/datastore/SaveToDataStorePanel.java 2016-07-30 19:36:56 UTC (rev 4999) @@ -155,7 +155,7 @@ //setData(SaveFileWizard.DATAKEY_FILE, file); setData(WritableDataStoreDataSource.CONNECTION_DESCRIPTOR_KEY, getConnectionDescriptor()); - setData(WritableDataStoreDataSource.DATASET_NAME_KEY, getData(SaveWizardPlugIn.DATAKEY_LAYERNAME)); + setData(WritableDataStoreDataSource.DATASET_NAME_KEY, getData(SaveWizardPlugIn.DATAKEY_SIMPLIFIED_LAYERNAME)); setData(WritableDataStoreDataSource.GEOM_DIM_KEY, writeCreate3dGeometriesSelected()?3:2); setData(WritableDataStoreDataSource.NAN_Z_TO_VALUE_KEY, nanZToValue()); setData(WritableDataStoreDataSource.CREATE_PK, isCreatePrimaryKeyColumnSelected()); Modified: core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java 2016-07-30 16:36:38 UTC (rev 4998) +++ core/trunk/src/org/openjump/core/ui/plugin/file/SaveWizardPlugIn.java 2016-07-30 19:36:56 UTC (rev 4999) @@ -1,10 +1,11 @@ package org.openjump.core.ui.plugin.file; +import java.util.Collection; import java.util.List; import org.openjump.core.ui.plugin.AbstractThreadedUiPlugIn; import org.openjump.core.ui.plugin.datastore.SaveToDataStoreWizard; -import org.openjump.core.ui.plugin.file.save.SaveFileWizard; +import org.openjump.core.ui.plugin.file.save.SaveToFileWizard; import org.openjump.core.ui.swing.wizard.WizardGroup; import org.openjump.core.ui.swing.wizard.WizardGroupDialog; @@ -14,6 +15,7 @@ import com.vividsolutions.jump.util.Blackboard; import com.vividsolutions.jump.workbench.JUMPWorkbench; import com.vividsolutions.jump.workbench.WorkbenchContext; +import com.vividsolutions.jump.workbench.model.Layerable; import com.vividsolutions.jump.workbench.plugin.EnableCheck; import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory; import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck; @@ -29,14 +31,17 @@ private static final String KEY = SaveWizardPlugIn.class.getName(); private static final String LASTWIZARDCLASSNAME = KEY + ".lastwizard"; - public static final String DATAKEY_LAYERNAME = KEY+".layername"; + public static final String DATAKEY_SIMPLIFIED_LAYERNAME = KEY + + ".simplified-layername"; + public static final String DATAKEY_SELECTED_LAYERABLES = KEY + + ".selected-layerables"; private static WizardGroupDialog dialog = null; private WizardGroup lastWizard; private Blackboard blackboard; public SaveWizardPlugIn() { - super(I18N.get(KEY)+" (experimental)"); + super(I18N.get(KEY) + " (experimental)"); } public static void addWizard(final WorkbenchContext workbenchContext, @@ -56,21 +61,20 @@ FeatureInstaller.getInstance().addMainMenuPlugin(this, new String[] { MenuNames.FILE }); - // setWizard(new SaveFileWizard(context)); - // add file wiz - addWizard(context.getWorkbenchContext(), new SaveFileWizard(context)); + // add each wiz one by one + addWizard(context.getWorkbenchContext(), new SaveToFileWizard(context)); addWizard(context.getWorkbenchContext(), new SaveToDataStoreWizard(context)); } - public boolean execute(PlugInContext context) throws Exception { + public boolean execute(PlugInContext pluginContext) throws Exception { Registry registry = workbenchContext.getRegistry(); - WorkbenchFrame workbenchFrame = context.getWorkbenchFrame(); - String name = getName(); List<WizardGroup> wizards = registry.getEntries(KEY); WizardGroup lastwizard = null; - //dialog = null; + // dialog = null; if (dialog == null) { + WorkbenchFrame workbenchFrame = pluginContext.getWorkbenchFrame(); + String name = getName(); dialog = new WizardGroupDialog(workbenchContext, workbenchFrame, name); String lastwizardid = String.valueOf(blackboard.get(LASTWIZARDCLASSNAME)); @@ -81,17 +85,23 @@ } } } - - // legalize selected layer name (to be used by contained wizards) - String layerName = workbenchContext.getLayerNamePanel().getSelectedLayers()[0]. - getName().replaceAll("[/:\\\\><\\|]","_"); - dialog.setData(DATAKEY_LAYERNAME, layerName); - + + // fetch the selected layer from the plugincontext + Collection<Layerable> layers = pluginContext.getSelectedLayerables(); + // save it to dialog context for use in subsequent wizards + dialog.setData(DATAKEY_SELECTED_LAYERABLES, layers); + + // legalize selected layer's name (to be used by contained wizards) + Layerable layer = layers.iterator().next(); + String layerName = layer.getName().replaceAll("[/:\\\\><\\|]", "_"); + dialog.setData(DATAKEY_SIMPLIFIED_LAYERNAME, layerName); + // activate initial wizard if (lastWizard != null) dialog.setSelectedWizard(lastWizard); - else if (wizards.size() > 0) - dialog.setSelectedWizard(wizards.get(0)); + // or activate first + else if (dialog.getWizardCount() > 0) + dialog.setSelectedWizard(dialog.getWizardAt(0)); dialog.pack(); GUIUtil.centreOnWindow(dialog); Deleted: core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveFileWizard.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveFileWizard.java 2016-07-30 16:36:38 UTC (rev 4998) +++ core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveFileWizard.java 2016-07-30 19:36:56 UTC (rev 4999) @@ -1,62 +0,0 @@ -package org.openjump.core.ui.plugin.file.save; - -import java.io.File; - -import org.openjump.core.ui.io.file.DataSourceFileLayerSaver; -import org.openjump.core.ui.swing.wizard.AbstractWizardGroup; - -import com.vividsolutions.jump.I18N; -import com.vividsolutions.jump.task.TaskMonitor; -import com.vividsolutions.jump.workbench.WorkbenchContext; -import com.vividsolutions.jump.workbench.datasource.FileDataSourceQueryChooser; -import com.vividsolutions.jump.workbench.plugin.PlugInContext; -import com.vividsolutions.jump.workbench.ui.images.IconLoader; -import com.vividsolutions.jump.workbench.ui.wizard.WizardDialog; - -public class SaveFileWizard extends AbstractWizardGroup { - /** The key for the wizard. */ - public static final String KEY = SaveFileWizard.class.getName(); - public static final String DATAKEY_FILE = KEY + ".selected-file"; - public static final String DATAKEY_DATASOURCEQUERYCHOOSER = KEY - + ".selected-datasourcequerychooser"; - public static final String DATAKEY_FOLDER = KEY + ".last-folder"; - //public static final String DATAKEY_LAYERNAME = KEY + ".layername"; - - /** The plugin context. */ - private PlugInContext context; - - private File file; - - public SaveFileWizard(final PlugInContext context) { - super(I18N.get(KEY), IconLoader.icon("disk_dots.png"), SelectFilePanel.KEY); - this.context = context; - } - - @Override - public void initialize(WorkbenchContext workbenchContext, WizardDialog dialog) { -// //for debugging -// removeAllPanels(); - // already initialized - if (!getPanels().isEmpty()) - return; - - SelectFilePanel selectFilePanel = new SelectFilePanel(workbenchContext); - selectFilePanel.setDialog(dialog); - addPanel(selectFilePanel); - } - - - @Override - public void run(WizardDialog dialog, TaskMonitor monitor) throws Exception { - // retrieve selected file - File file = (File) dialog.getData(DATAKEY_FILE); - // retrieve selected file loader - FileDataSourceQueryChooser fdsqc = (FileDataSourceQueryChooser) dialog - .getData(DATAKEY_DATASOURCEQUERYCHOOSER); - - DataSourceFileLayerSaver writer = new DataSourceFileLayerSaver( - context.getWorkbenchContext(), fdsqc); - - writer.write(monitor, file.toURI(), null); - } -} \ No newline at end of file Copied: core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveToFileWizard.java (from rev 4996, core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveFileWizard.java) =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveToFileWizard.java (rev 0) +++ core/trunk/src/org/openjump/core/ui/plugin/file/save/SaveToFileWizard.java 2016-07-30 19:36:56 UTC (rev 4999) @@ -0,0 +1,76 @@ +package org.openjump.core.ui.plugin.file.save; + +import java.io.File; +import java.util.Collection; + +import org.openjump.core.ui.io.file.DataSourceFileLayerSaver; +import org.openjump.core.ui.plugin.file.SaveWizardPlugIn; +import org.openjump.core.ui.swing.wizard.AbstractWizardGroup; + +import com.vividsolutions.jump.I18N; +import com.vividsolutions.jump.JUMPException; +import com.vividsolutions.jump.task.TaskMonitor; +import com.vividsolutions.jump.workbench.WorkbenchContext; +import com.vividsolutions.jump.workbench.datasource.FileDataSourceQueryChooser; +import com.vividsolutions.jump.workbench.model.Layer; +import com.vividsolutions.jump.workbench.model.Layerable; +import com.vividsolutions.jump.workbench.plugin.PlugInContext; +import com.vividsolutions.jump.workbench.ui.images.IconLoader; +import com.vividsolutions.jump.workbench.ui.wizard.WizardDialog; + +public class SaveToFileWizard extends AbstractWizardGroup { + /** The key for the wizard. */ + public static final String KEY = SaveToFileWizard.class.getName(); + public static final String DATAKEY_FILE = KEY + ".selected-file"; + public static final String DATAKEY_DATASOURCEQUERYCHOOSER = KEY + + ".selected-datasourcequerychooser"; + public static final String DATAKEY_FOLDER = KEY + ".last-folder"; + //public static final String DATAKEY_LAYERNAME = KEY + ".layername"; + + /** The plugin context. */ + private PlugInContext context; + + private File file; + + public SaveToFileWizard(final PlugInContext context) { + super(I18N.get(KEY), IconLoader.icon("disk_dots.png"), SelectFilePanel.KEY); +// this.context = context; + } + + @Override + public void initialize(WorkbenchContext workbenchContext, WizardDialog dialog) { +// //for debugging +// removeAllPanels(); + // already initialized + if (!getPanels().isEmpty()) + return; + + SelectFilePanel selectFilePanel = new SelectFilePanel(workbenchContext); + selectFilePanel.setDialog(dialog); + addPanel(selectFilePanel); + } + + + @Override + public void run(WizardDialog dialog, TaskMonitor monitor) throws Exception { + // retrieve selected file + File file = (File) dialog.getData(DATAKEY_FILE); + // retrieve selected file loader + FileDataSourceQueryChooser fdsqc = (FileDataSourceQueryChooser) dialog + .getData(DATAKEY_DATASOURCEQUERYCHOOSER); + // retrieve selected layer + Collection<Layerable> layers = (Collection<Layerable>) dialog.getData(SaveWizardPlugIn.DATAKEY_SELECTED_LAYERABLES); + if (layers == null || layers.isEmpty()) + throw new JUMPException("no layers selected"); + + Layerable layerable = layers.iterator().next(); + if (!(layerable instanceof Layer)) + throw new JUMPException("selected layerable is not of type layer"); + + Layer layer = (Layer)layerable; + DataSourceFileLayerSaver writer = new DataSourceFileLayerSaver( + layer, fdsqc); + + writer.write(monitor, file.toURI(), null); + } +} \ No newline at end of file Modified: core/trunk/src/org/openjump/core/ui/plugin/file/save/SelectFilePanel.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/file/save/SelectFilePanel.java 2016-07-30 16:36:38 UTC (rev 4998) +++ core/trunk/src/org/openjump/core/ui/plugin/file/save/SelectFilePanel.java 2016-07-30 19:36:56 UTC (rev 4999) @@ -121,12 +121,12 @@ rescanCurrentDirectory(); // reset selection - setData(SaveFileWizard.DATAKEY_DATASOURCEQUERYCHOOSER, null); - setData(SaveFileWizard.DATAKEY_FILE, null); + setData(SaveToFileWizard.DATAKEY_DATASOURCEQUERYCHOOSER, null); + setData(SaveToFileWizard.DATAKEY_FILE, null); setSelectedFile(new File("")); // preset selected layer name, if set - String dataSetName = (String) getData(SaveWizardPlugIn.DATAKEY_LAYERNAME); + String dataSetName = (String) getData(SaveWizardPlugIn.DATAKEY_SIMPLIFIED_LAYERNAME); if (dataSetName != null && !dataSetName.isEmpty()) { setSelectedFile(new File(dataSetName)); } @@ -137,7 +137,7 @@ if (!isInputValid()) throw new CancelNextException(); - File file = (File) getData(SaveFileWizard.DATAKEY_FILE); + File file = (File) getData(SaveToFileWizard.DATAKEY_FILE); // file overwriting is only checked when the selection is finally approved if (file.exists()) { boolean overwrite = GUIUtil.showConfirmOverwriteDialog(getDialog(), file); @@ -187,8 +187,8 @@ @Override public boolean isInputValid() { // reset selection - setData(SaveFileWizard.DATAKEY_DATASOURCEQUERYCHOOSER, null); - setData(SaveFileWizard.DATAKEY_FILE, null); + setData(SaveToFileWizard.DATAKEY_DATASOURCEQUERYCHOOSER, null); + setData(SaveToFileWizard.DATAKEY_FILE, null); // [2016.07 ede] the following runs the filechoosers own routine to fill up // the internal selected files vars properly @@ -230,9 +230,9 @@ return false; // save successful selection - setData(SaveFileWizard.DATAKEY_DATASOURCEQUERYCHOOSER, + setData(SaveToFileWizard.DATAKEY_DATASOURCEQUERYCHOOSER, datasourcefilter.getFileDataSourceQueryChooser()); - setData(SaveFileWizard.DATAKEY_FILE, file); + setData(SaveToFileWizard.DATAKEY_FILE, file); return true; } ------------------------------------------------------------------------------ _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel