|
From: <de...@us...> - 2012-04-19 09:09:50
|
Revision: 7085
http://fudaa.svn.sourceforge.net/fudaa/?rev=7085&view=rev
Author: deniger
Date: 2012-04-19 09:09:39 +0000 (Thu, 19 Apr 2012)
Log Message:
-----------
ajout module command-line
Added Paths:
-----------
trunk/soft/fudaa-crue/ui-commandline/
trunk/soft/fudaa-crue/ui-commandline/pom.xml
trunk/soft/fudaa-crue/ui-commandline/src/
trunk/soft/fudaa-crue/ui-commandline/src/main/
trunk/soft/fudaa-crue/ui-commandline/src/main/java/
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceChooser.java
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceInstaller.java
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceUtils.java
trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/OpenedNetbeansInstance.java
trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/
trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/manifest.mf
trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/module.xml
trunk/soft/fudaa-crue/ui-commandline/src/main/resources/
trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/
trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/
trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/fudaa/
trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/fudaa/crue/
trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/fudaa/crue/uicommandline/
trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/fudaa/crue/uicommandline/Bundle.properties
Property changes on: trunk/soft/fudaa-crue/ui-commandline
___________________________________________________________________
Added: svn:ignore
+ target
Added: trunk/soft/fudaa-crue/ui-commandline/pom.xml
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/pom.xml (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/pom.xml 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,86 @@
+
+<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/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.fudaa.soft.fudaa-crue</groupId>
+ <artifactId>fudaa-crue</artifactId>
+ <version>0.51-SNAPSHOT</version>
+ </parent>
+ <artifactId>ui-commandline</artifactId>
+ <packaging>nbm</packaging>
+
+ <name>Crue UI CommandLine</name>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-netbeans-api-annotations-common</artifactId>
+ <version>${netbeans.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-netbeans-modules-sendopts</artifactId>
+ <version>${netbeans.version}</version>
+ <type>nbm</type>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-openide-util-lookup</artifactId>
+ <version>${netbeans.version}</version>
+ <type>nbm</type>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-openide-util</artifactId>
+ <version>${netbeans.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-openide-filesystems</artifactId>
+ <version>${netbeans.version}</version>
+ <type>nbm</type>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-openide-windows</artifactId>
+ <version>${netbeans.version}</version>
+ <type>nbm</type>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-openide-modules</artifactId>
+ <version>${netbeans.version}</version>
+ <type>nbm</type>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-openide-nodes</artifactId>
+ <version>${netbeans.version}</version>
+ <type>nbm</type>
+ </dependency>
+ <dependency>
+ <groupId>org.netbeans.api</groupId>
+ <artifactId>org-openide-dialogs</artifactId>
+ <version>${netbeans.version}</version>
+ <type>nbm</type>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <!-- to have the jar plugin pickup the nbm generated manifest -->
+ <useDefaultManifestFile>true</useDefaultManifestFile>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/ArgumentLineAnalyser.java 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,157 @@
+package org.fudaa.fudaa.crue.uicommandline;
+
+import java.awt.EventQueue;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import org.fudaa.fudaa.crue.uicommandline.MultiNetbeansInstanceChooser.Result;
+import org.netbeans.api.sendopts.CommandException;
+import org.netbeans.spi.sendopts.Env;
+import org.netbeans.spi.sendopts.Option;
+import org.netbeans.spi.sendopts.OptionProcessor;
+import org.openide.util.Exceptions;
+import org.openide.util.lookup.ServiceProvider;
+import org.openide.windows.WindowManager;
+
+/**
+ *
+ * @author deniger ( genesis)
+ */
+@ServiceProvider(service = OptionProcessor.class)
+public class ArgumentLineAnalyser extends OptionProcessor {
+
+ private static final String TO_FRONT_OPTION = "toFront";
+ private static String IS_COPY_OPTION = "isCopy";
+// private Set<File> userDirOpened = new HashSet<File>();
+ private Option openMultiInstances = Option.withoutArgument(Option.NO_SHORT_NAME, "multi-instances");
+ private Option toFront = Option.withoutArgument(Option.NO_SHORT_NAME, TO_FRONT_OPTION);
+ private Option isCopy = Option.withoutArgument(Option.NO_SHORT_NAME, IS_COPY_OPTION);
+
+ private void activateOrCreateNewInstance() {
+ MultiNetbeansInstanceChooser.Result res = MultiNetbeansInstanceChooser.choose(getOpenedInstances(true));
+ if (res.isCreateNew()) {
+ launchNewInstance();
+ } else if (res.isActivateExisting()) {
+ OpenedNetbeansInstance instance = res.getInstance();
+ if (instance.isCurrent()) {
+ moveMainWindowToFront();
+ } else {
+ activateInstance(instance.getUserDir());
+ }
+ }
+ }
+
+ private void firstInstanceLaunched() {
+ //for the main instance we clean subaltern userDir and we test if other instances already launched
+ if (!MultiNetbeansInstanceUtils.isCopiedInstance()) {
+ //first call of the main window
+ //we clean old userDir
+ MultiNetbeansInstanceUtils.cleanUserDirs();
+ //if not null, the main instance has been closed before subalterns.
+ List<OpenedNetbeansInstance> openedInstances = getOpenedInstances(false);
+ //what can we do ?
+ if (!openedInstances.isEmpty()) {
+ Result choose = MultiNetbeansInstanceChooser.choose(openedInstances);
+ if (choose.isActivateExisting()) {
+ //WindowManager.getDefault().getMainWindow().setVisible(false);
+ activateInstance(choose.getInstance().getUserDir());
+ System.exit(0);
+ } else if (choose.isCancel()) {
+ System.exit(0);
+ }
+ }
+ }
+ }
+
+ private void instanceAlreadyLaunched() {
+ EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ activateOrCreateNewInstance();
+ }
+ });
+ }
+
+ private void launchNewInstance() {
+ try {
+ File newUserDir = MultiNetbeansInstanceUtils.createNewUserDir();
+ launchAppli(newUserDir, "--" + IS_COPY_OPTION);
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ }
+
+ private void activateInstance(File userDir) {
+ launchAppli(userDir, "--" + TO_FRONT_OPTION);
+
+ }
+
+ private void launchAppli(File newUserDir, final String option) {
+ File platformDir = new File(System.getProperty("netbeans.home"));
+ File binDir = new File(platformDir.getParentFile(), "bin");
+ File exe = new File(binDir, MultiNetbeansInstanceUtils.isWindows() ? "fudaacrue.exe" : "fudaacrue");
+ ProcessBuilder builder = new ProcessBuilder(exe.getAbsolutePath(), "--userdir", newUserDir.getAbsolutePath(), option);
+ try {
+ builder.start();
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ }
+
+ public void moveMainWindowToFront() {
+ EventQueue.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ WindowManager.getDefault().getMainWindow().toFront();
+ }
+ });
+ }
+
+ @Override
+ protected Set<Option> getOptions() {
+ HashSet set = new HashSet();
+ set.add(openMultiInstances);
+ set.add(toFront);
+ set.add(isCopy);
+ return set;
+ }
+
+ private List<OpenedNetbeansInstance> getOpenedInstances(boolean includeCurrent) {
+ List<OpenedNetbeansInstance> openedIstance = new ArrayList<OpenedNetbeansInstance>();
+ if (includeCurrent) {
+ OpenedNetbeansInstance thisInstance = new OpenedNetbeansInstance(MultiNetbeansInstanceUtils.getUserDir(), MultiNetbeansInstanceUtils.getMainWindowTitle(), true);
+ openedIstance.add(thisInstance);
+ }
+ List<File> userDirOpened = MultiNetbeansInstanceUtils.listUserDir();
+ for (File userDir : userDirOpened) {
+ File frameName = MultiNetbeansInstanceUtils.getFrameName(userDir);
+ if (frameName.exists()) {
+ String frame = MultiNetbeansInstanceUtils.readFrameName(frameName);
+ if (frame != null) {
+ openedIstance.add(new OpenedNetbeansInstance(userDir, frame, false));
+ }
+ }
+ }
+ Collections.sort(openedIstance);
+ return openedIstance;
+ }
+
+ @Override
+ protected void process(Env env, Map<Option, String[]> maps) throws CommandException {
+ //for copied instances we just move to front.
+ if (MultiNetbeansInstanceUtils.isCopiedInstance() || maps.containsKey(toFront)) {
+ moveMainWindowToFront();
+ return;
+ }
+ if (maps.containsKey(isCopy)) {
+ MultiNetbeansInstanceUtils.storedCopiedInstance();
+ }
+ if (MultiNetbeansInstanceUtils.getFrameName().exists()) {
+ instanceAlreadyLaunched();
+ } else {
+ firstInstanceLaunched();
+ }
+ }
+}
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceChooser.java
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceChooser.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceChooser.java 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,107 @@
+package org.fudaa.fudaa.crue.uicommandline;
+
+import java.awt.Component;
+import java.util.List;
+import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import org.openide.DialogDisplayer;
+import org.openide.NotifyDescriptor;
+import org.openide.util.NbBundle;
+
+/**
+ *
+ * @author deniger ( genesis)
+ */
+public class MultiNetbeansInstanceChooser {
+
+ public static class Result {
+
+ private final static int CANCEL = 0;
+ private final static int ACTIVE = 1;
+ private final static int NEW = 2;
+ private final int action;
+ private final OpenedNetbeansInstance instance;
+
+ public OpenedNetbeansInstance getInstance() {
+ return instance;
+ }
+
+ public Result(int action, OpenedNetbeansInstance instance) {
+ this.action = action;
+ this.instance = instance;
+ }
+
+ public static Result createCancel() {
+ return new Result(CANCEL, null);
+ }
+
+ public static Result createNewInstance() {
+ return new Result(NEW, null);
+ }
+
+ public static Result createActivate(OpenedNetbeansInstance instance) {
+ if (instance == null) {
+ return createCancel();
+ }
+ return new Result(ACTIVE, instance);
+ }
+
+ public boolean isCancel() {
+ return CANCEL == action;
+ }
+
+ public boolean isCreateNew() {
+ return NEW == action;
+ }
+
+ public boolean isActivateExisting() {
+ return ACTIVE == action;
+ }
+ }
+
+ private static class InstanceRenderer extends DefaultListCellRenderer {
+
+ @Override
+ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ Object newValue = value;
+ if (value != null) {
+ newValue = ((OpenedNetbeansInstance) value).getFrameName();
+ }
+ return super.getListCellRendererComponent(list, newValue, index, isSelected, cellHasFocus);
+ }
+ }
+
+ public static Result choose(List<OpenedNetbeansInstance> in) {
+
+ final JList list = new JList(in.toArray());
+ list.setCellRenderer(new InstanceRenderer());
+ list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+
+ String title = NbBundle.getMessage(MultiNetbeansInstanceChooser.class, "ChooseInstance.DialogTitle");
+ String optionActive = NbBundle.getMessage(MultiNetbeansInstanceChooser.class, "ChooseInstance.ActiveSelected");
+ String optionNewInstance = NbBundle.getMessage(MultiNetbeansInstanceChooser.class, "ChooseInstance.CreateNewInstance");
+ String cancel = NbBundle.getMessage(MultiNetbeansInstanceChooser.class, "ChooseInstance.Cancel");
+ final NotifyDescriptor nd = new NotifyDescriptor.Confirmation(new JScrollPane(list), title);
+ nd.setValid(false);
+ list.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ nd.setValid(!list.getSelectionModel().isSelectionEmpty());
+ }
+ });
+
+ nd.setOptions(new Object[]{optionActive, optionNewInstance, cancel});
+ Object showQuestion = DialogDisplayer.getDefault().notify(nd);
+ if (showQuestion.equals(optionNewInstance)) {
+ return Result.createNewInstance();
+ } else if (showQuestion.equals(optionActive)) {
+ return Result.createActivate((OpenedNetbeansInstance) list.getSelectedValue());
+ }
+
+ return Result.createCancel();
+
+ }
+}
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceInstaller.java
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceInstaller.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceInstaller.java 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,45 @@
+package org.fudaa.fudaa.crue.uicommandline;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.IOException;
+import org.openide.filesystems.FileUtil;
+import org.openide.modules.ModuleInstall;
+import org.openide.util.Exceptions;
+import org.openide.windows.WindowManager;
+
+/**
+ *
+ * @author deniger ( genesis)
+ */
+public class MultiNetbeansInstanceInstaller extends ModuleInstall implements Runnable, PropertyChangeListener {
+
+ @Override
+ public void close() {
+ File frameName = MultiNetbeansInstanceUtils.getFrameName();
+ if (frameName.exists()) {
+ frameName.delete();
+ }
+ //we clean for the main instance only:
+ if (!MultiNetbeansInstanceUtils.isCopiedInstance()) {
+ MultiNetbeansInstanceUtils.cleanUserDirs();
+ }
+ }
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ MultiNetbeansInstanceUtils.storeFrameName();
+ }
+
+ @Override
+ public void restored() {
+ WindowManager.getDefault().invokeWhenUIReady(this);
+ }
+
+ @Override
+ public void run() {
+ MultiNetbeansInstanceUtils.storeFrameName();
+ WindowManager.getDefault().getMainWindow().addPropertyChangeListener("title", this);
+ }
+}
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceUtils.java
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceUtils.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceUtils.java 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,160 @@
+package org.fudaa.fudaa.crue.uicommandline;
+
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.util.Exceptions;
+import org.openide.windows.WindowManager;
+
+/**
+ *
+ * @author deniger ( genesis)
+ */
+public class MultiNetbeansInstanceUtils {
+
+ public static final String INSTANCE_LOCKER_FILENAME = "frame-title.txt";
+ public static final String USER_DIR_PREFIX = "userDir";
+ private static String IS_COPY_PROPERTY = "thisInstanceIsACopy";
+
+ public static boolean isCopiedInstance() {
+ return Boolean.TRUE.toString().equals(System.getProperty(IS_COPY_PROPERTY));
+ }
+
+ public static void storedCopiedInstance() {
+ System.setProperty(IS_COPY_PROPERTY, Boolean.TRUE.toString());
+ }
+
+ public static File createTempDir(final String prefix, File parent) throws IOException {
+ final File tempFile = File.createTempFile(prefix, "", parent);
+ if (!tempFile.delete()) {
+ throw new IOException();
+ }
+
+ if (!tempFile.mkdir()) {
+ throw new IOException();
+ }
+
+ return tempFile;
+ }
+
+ public static List<File> listUserDir() {
+ List<File> userDirs = new ArrayList<File>();
+ File f = getUserDir();
+ File[] listFiles = f.listFiles();
+ for (File file : listFiles) {
+ if (isSubalternUserDir(file)) {
+ userDirs.add(file);
+ }
+ }
+ return userDirs;
+ }
+
+ private static boolean isSubalternUserDir(File file) {
+ return file.isDirectory() && file.getName().startsWith(USER_DIR_PREFIX);
+ }
+
+ public static File createNewUserDir() throws IOException {
+ File userDir = getUserDir();
+ File newUserDir = new File(userDir, "userDir" + new SimpleDateFormat("yyyy-MM-dd-HH'h'mm'm'ss's'").format(new Date()));
+ if (newUserDir.exists()) {
+ newUserDir = createTempDir(USER_DIR_PREFIX, userDir);
+ }
+ newUserDir.mkdirs();
+ //copy of the userDirFiles
+ FileObject newUserDirFileObject = FileUtil.toFileObject(newUserDir);
+ File[] listFiles = userDir.listFiles();
+ for (File file : listFiles) {
+ if (!isSubalternUserDir(file) && !"lock".equals(file.getName()) && !INSTANCE_LOCKER_FILENAME.equals(file.getName())) {
+ FileObject source = FileUtil.toFileObject(file);
+ source.copy(newUserDirFileObject, source.getName(), source.getExt());
+ }
+ }
+ return newUserDir;
+ }
+
+ public static final boolean isWindows() {
+ return (System.getProperty("os.name").startsWith("Win"));
+ }
+
+ public static File getUserDir() {
+ final FileObject configRoot = FileUtil.getConfigRoot();
+ return FileUtil.toFile(configRoot).getParentFile();
+ }
+
+ public static File getFrameName() {
+ return getFrameName(getUserDir());
+ }
+
+ public static File getFrameName(File userDir) {
+ return new File(userDir, INSTANCE_LOCKER_FILENAME);
+ }
+
+ public static String getMainWindowTitle() {
+ return WindowManager.getDefault().getMainWindow().getTitle();
+ }
+
+ public static String readFrameName(File frameTitleFile) {
+ String res = null;
+ FileReader reader = null;
+ try {
+ reader = new FileReader(frameTitleFile);
+ BufferedReader buffReadder = new BufferedReader(reader);
+ res = buffReadder.readLine();
+ } catch (IOException ex) {
+ Logger.getLogger(ArgumentLineAnalyser.class.getName()).log(Level.SEVERE, null, ex);
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException ex) {
+ Logger.getLogger(ArgumentLineAnalyser.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+
+ return res;
+
+ }
+
+ public static void cleanUserDirs() {
+ List<File> userDirOpened = MultiNetbeansInstanceUtils.listUserDir();
+ for (File userDir : userDirOpened) {
+ File frameName = MultiNetbeansInstanceUtils.getFrameName(userDir);
+ if (!frameName.exists()) {
+ try {
+ FileUtil.toFileObject(userDir).delete();
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ }
+ }
+ }
+
+ public static synchronized void storeFrameName() {
+ File f = getFrameName();
+ FileWriter w = null;
+ try {
+ w = new FileWriter(f, false);
+ final String mainWindowTitle = getMainWindowTitle();
+ w.append(mainWindowTitle);
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ Logger.getLogger(ArgumentLineAnalyser.class.getName()).log(Level.SEVERE, null, ex);
+ } finally {
+ if (w != null) {
+ try {
+ w.close();
+ } catch (IOException ex) {
+ Exceptions.printStackTrace(ex);
+ Logger.getLogger(ArgumentLineAnalyser.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+ }
+}
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/OpenedNetbeansInstance.java
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/OpenedNetbeansInstance.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/java/org/fudaa/fudaa/crue/uicommandline/OpenedNetbeansInstance.java 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,47 @@
+package org.fudaa.fudaa.crue.uicommandline;
+
+import java.io.File;
+
+/**
+ *
+ * @author deniger ( genesis)
+ */
+class OpenedNetbeansInstance implements Comparable<OpenedNetbeansInstance> {
+ private final File userDir;
+ private final String frameName;
+ private final boolean current;
+
+ public OpenedNetbeansInstance(File userDir, String frameName, boolean current) {
+ this.userDir = userDir;
+ this.frameName = frameName;
+ this.current = current;
+ }
+
+ public String getFrameName() {
+ return frameName;
+ }
+
+ public File getUserDir() {
+ return userDir;
+ }
+
+ public boolean isCurrent() {
+ return current;
+ }
+
+ @Override
+ public int compareTo(OpenedNetbeansInstance o) {
+ if (o == null) {
+ return 1;
+ }
+ if (o == this) {
+ return 0;
+ }
+ int idx = frameName.compareTo(o.frameName);
+ if (idx == 0) {
+ idx = userDir.compareTo(o.userDir);
+ }
+ return idx;
+ }
+
+}
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/manifest.mf
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/manifest.mf (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/manifest.mf 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+OpenIDE-Module-Localizing-Bundle: org/fudaa/fudaa/crue/uicommandline/Bundle.properties
+OpenIDE-Module-Install: org/fudaa/fudaa/crue/uicommandline/MultiNetbeansInstanceInstaller.class
\ No newline at end of file
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/module.xml
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/module.xml (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/nbm/module.xml 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<nbm>
+ <!--
+ <moduleType>autoload</moduleType>
+ <codeNameBase>org.fudaa.fudaa.crue.uicommandline/1</codeNameBase>
+ <licenseName>Apache License, Version 2.0</licenseName>
+ <licenseFile>license.txt</licenseFile>
+ -->
+</nbm>
Added: trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/fudaa/crue/uicommandline/Bundle.properties
===================================================================
--- trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/fudaa/crue/uicommandline/Bundle.properties (rev 0)
+++ trunk/soft/fudaa-crue/ui-commandline/src/main/resources/org/fudaa/fudaa/crue/uicommandline/Bundle.properties 2012-04-19 09:09:39 UTC (rev 7085)
@@ -0,0 +1,9 @@
+# Localized module labels. Defaults taken from POM (<name>, <description>, <groupId>) if unset.
+#OpenIDE-Module-Name=
+#OpenIDE-Module-Short-Description=
+#OpenIDE-Module-Long-Description=
+#OpenIDE-Module-Display-Category=
+ChooseInstance.DialogTitle=Choisir une instance
+ChooseInstance.ActiveSelected=Activer l'instance s\u00e9lectionn\u00e9e
+ChooseInstance.CreateNewInstance=Cr\u00e9er une nouvelle instance
+ChooseInstance.Cancel=Annuler
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|