package org.openjump.core.ui.plugin.file;
import java.util.List;
import javax.swing.Icon;
import org.openjump.core.ui.images.IconLoader;
import org.openjump.core.ui.plugin.AbstractThreadedUiPlugIn;
import org.openjump.core.ui.plugin.file.open.OpenProjectWizard;
import org.openjump.core.ui.swing.wizard.WizardGroup;
import org.openjump.core.ui.swing.wizard.WizardGroupDialog;
import com.vividsolutions.jump.I18N;
import com.vividsolutions.jump.task.TaskMonitor;
import com.vividsolutions.jump.workbench.JUMPWorkbench;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.registry.Registry;
import com.vividsolutions.jump.workbench.ui.MenuNames;
import com.vividsolutions.jump.workbench.ui.WorkbenchFrame;
import com.vividsolutions.jump.workbench.ui.WorkbenchToolBar;
import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
public class OpenWizardPlugIn extends AbstractThreadedUiPlugIn {
private static final String KEY = OpenWizardPlugIn.class.getName();
private WizardGroupDialog dialog;
private WizardGroup lastWizard;
public OpenWizardPlugIn() {
super(I18N.get(KEY), IconLoader.icon("folder_add.png"));
}
public static void addWizard(final WorkbenchContext workbenchContext,
final WizardGroup wizard) {
Registry registry = workbenchContext.getRegistry();
registry.createEntry(KEY, wizard);
}
public void initialize(PlugInContext context) throws Exception {
super.initialize(context);
JUMPWorkbench workbench = workbenchContext.getWorkbench();
WorkbenchFrame frame = workbench.getFrame();
Icon icon = getIcon();
String name = getName();
FeatureInstaller featureInstaller = new FeatureInstaller(workbenchContext);
featureInstaller.addMainMenuItem(new String[] {
MenuNames.FILE
}, this, 1);
// Add tool-bar Icon
WorkbenchToolBar toolBar = frame.getToolBar();
toolBar.addPlugIn(1, this, icon, enableCheck, workbenchContext);
// Add layer pop-up menu
featureInstaller.addPopupMenuItem(frame.getCategoryPopupMenu(), this, name
+ "{pos:3}", false, icon, enableCheck);
}
public boolean execute(PlugInContext context) throws Exception {
Registry registry = workbenchContext.getRegistry();
WorkbenchFrame workbenchFrame = context.getWorkbenchFrame();
String name = getName();
if (dialog == null) {
dialog = new WizardGroupDialog(workbenchContext, workbenchFrame, name);
List<WizardGroup> wizards = registry.getEntries(KEY);
lastWizard = wizards.get(0);
for (WizardGroup wizard : wizards) {
dialog.addWizard(wizard);
if (wizard instanceof OpenProjectWizard) {
lastWizard = wizard;
}
}
}
dialog.setSelectedWizard(lastWizard);
dialog.setVisible(true);
lastWizard = dialog.getSelectedWizard();
if (dialog.wasFinishPressed()) {
return true;
}
return false;
}
public void run(TaskMonitor monitor, PlugInContext context) throws Exception {
WizardGroup wizard = dialog.getSelectedWizard();
wizard.run(dialog, monitor);
}
}