-package org.simantics.team.ui;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.util.Deque;\r
-import java.util.LinkedList;\r
-\r
-import org.eclipse.core.runtime.preferences.InstanceScope;\r
-import org.eclipse.jface.dialogs.Dialog;\r
-import org.eclipse.jface.preference.IPersistentPreferenceStore;\r
-import org.eclipse.jface.preference.IPreferenceStore;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.jface.wizard.Wizard;\r
-import org.eclipse.jface.wizard.WizardDialog;\r
-import org.eclipse.swt.widgets.Display;\r
-import org.eclipse.ui.IImportWizard;\r
-import org.eclipse.ui.IWorkbench;\r
-import org.eclipse.ui.PlatformUI;\r
-import org.eclipse.ui.preferences.ScopedPreferenceStore;\r
-import org.simantics.db.common.utils.Logger;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.team.Activator;\r
-import org.simantics.team.Utils;\r
-import org.simantics.utils.ui.ErrorLogger;\r
-\r
-public class StageInitWizard extends Wizard implements IImportWizard {\r
- static public class Data {\r
- public Boolean ok = false;\r
- public Boolean requireExisting = false;\r
- public String comment; // Initial comment.\r
- Deque<String> recentLocations = new LinkedList<String>();;\r
- final File stagingFolder;\r
- public File teamFolder;\r
- public Data(File stagingFolder, File teamFolder) {\r
- this.stagingFolder = stagingFolder;\r
- this.teamFolder = teamFolder;\r
- }\r
- }\r
- public static boolean openInitWizard(final Data data)\r
- throws DatabaseException {\r
- final Display display = PlatformUI.getWorkbench().getDisplay();\r
- display.syncExec(new Runnable() {\r
- @Override\r
- public void run() {\r
- StageInitWizard stageInitWizard = new StageInitWizard(data);\r
- WizardDialog dialog = new WizardDialog(display.getActiveShell(), stageInitWizard);\r
- if (Dialog.OK != dialog.open())\r
- data.ok = false;\r
- else\r
- data.ok = true;\r
- }});\r
- return data.ok;\r
- }\r
- private final Data data;\r
- private static final int MAX_RECENT_IMPORT_PATHS = 10;\r
- private boolean readPreferences(IStructuredSelection selection) {\r
- IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.PLUGIN_ID);\r
- try {\r
- data.teamFolder = Utils.getTeamFolder();\r
- if (null == data.teamFolder)\r
- data.teamFolder = new File("Default Team Folder");\r
- } catch (DatabaseException e) {\r
- Logger.defaultLogError("Failed to get team folder.", e);\r
- data.teamFolder = new File("Default Team Folder");\r
- }\r
- String recentPathsPref = store.getString(Preferences.RECENT_TEAM_FOLDERS);\r
- data.recentLocations = Preferences.decodePaths(recentPathsPref);\r
- return true;\r
- }\r
- private void writePreferences() throws IOException {\r
- IPersistentPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.PLUGIN_ID);\r
- store.putValue(Preferences.CURRENT_TEAM_FOLDER, data.teamFolder.getAbsolutePath());\r
- store.putValue(Preferences.RECENT_TEAM_FOLDERS, Preferences.encodePaths(data.recentLocations));\r
- if (store.needsSaving())\r
- store.save();\r
- }\r
- public StageInitWizard(Data data) {\r
- this.data = data;\r
- setWindowTitle("Staging Init");\r
- setNeedsProgressMonitor(true);\r
- }\r
- @Override\r
- public void init(IWorkbench workbench, IStructuredSelection selection) {\r
- readPreferences(selection);\r
- }\r
- @Override\r
- public void addPages() {\r
- super.addPages();\r
- addPage(new StageInitPage(data));\r
- }\r
- @Override\r
- public boolean performFinish() {\r
- try {\r
- data.recentLocations.addFirst(data.teamFolder.getAbsolutePath());\r
- Preferences.removeDuplicates(data.recentLocations);\r
- if (data.recentLocations.size() > MAX_RECENT_IMPORT_PATHS)\r
- data.recentLocations.pollLast();\r
- writePreferences();\r
- } catch (IOException e) {\r
- ErrorLogger.defaultLogError("Failed to write preferences", e);\r
- }\r
- return true;\r
- }\r
-}\r
+package org.simantics.team.ui;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Deque;
+import java.util.LinkedList;
+
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.preference.IPersistentPreferenceStore;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.preferences.ScopedPreferenceStore;
+import org.simantics.db.common.utils.Logger;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.team.Activator;
+import org.simantics.team.Utils;
+import org.simantics.utils.ui.ErrorLogger;
+
+public class StageInitWizard extends Wizard implements IImportWizard {
+ static public class Data {
+ public Boolean ok = false;
+ public Boolean requireExisting = false;
+ public String comment; // Initial comment.
+ Deque<String> recentLocations = new LinkedList<String>();;
+ final File stagingFolder;
+ public File teamFolder;
+ public Data(File stagingFolder, File teamFolder) {
+ this.stagingFolder = stagingFolder;
+ this.teamFolder = teamFolder;
+ }
+ }
+ public static boolean openInitWizard(final Data data)
+ throws DatabaseException {
+ final Display display = PlatformUI.getWorkbench().getDisplay();
+ display.syncExec(new Runnable() {
+ @Override
+ public void run() {
+ StageInitWizard stageInitWizard = new StageInitWizard(data);
+ WizardDialog dialog = new WizardDialog(display.getActiveShell(), stageInitWizard);
+ if (Dialog.OK != dialog.open())
+ data.ok = false;
+ else
+ data.ok = true;
+ }});
+ return data.ok;
+ }
+ private final Data data;
+ private static final int MAX_RECENT_IMPORT_PATHS = 10;
+ private boolean readPreferences(IStructuredSelection selection) {
+ IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.PLUGIN_ID);
+ try {
+ data.teamFolder = Utils.getTeamFolder();
+ if (null == data.teamFolder)
+ data.teamFolder = new File("Default Team Folder");
+ } catch (DatabaseException e) {
+ Logger.defaultLogError("Failed to get team folder.", e);
+ data.teamFolder = new File("Default Team Folder");
+ }
+ String recentPathsPref = store.getString(Preferences.RECENT_TEAM_FOLDERS);
+ data.recentLocations = Preferences.decodePaths(recentPathsPref);
+ return true;
+ }
+ private void writePreferences() throws IOException {
+ IPersistentPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, Activator.PLUGIN_ID);
+ store.putValue(Preferences.CURRENT_TEAM_FOLDER, data.teamFolder.getAbsolutePath());
+ store.putValue(Preferences.RECENT_TEAM_FOLDERS, Preferences.encodePaths(data.recentLocations));
+ if (store.needsSaving())
+ store.save();
+ }
+ public StageInitWizard(Data data) {
+ this.data = data;
+ setWindowTitle("Staging Init");
+ setNeedsProgressMonitor(true);
+ }
+ @Override
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ readPreferences(selection);
+ }
+ @Override
+ public void addPages() {
+ super.addPages();
+ addPage(new StageInitPage(data));
+ }
+ @Override
+ public boolean performFinish() {
+ try {
+ data.recentLocations.addFirst(data.teamFolder.getAbsolutePath());
+ Preferences.removeDuplicates(data.recentLocations);
+ if (data.recentLocations.size() > MAX_RECENT_IMPORT_PATHS)
+ data.recentLocations.pollLast();
+ writePreferences();
+ } catch (IOException e) {
+ ErrorLogger.defaultLogError("Failed to write preferences", e);
+ }
+ return true;
+ }
+}