aboutsummaryrefslogtreecommitdiffstats
path: root/tools/eclipse
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2012-08-04 18:07:59 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2012-08-04 18:07:59 +0000
commitff7297b3bfd411e48b3134b5c0bf60e51fce6688 (patch)
tree8979bbe66729f420c3956f3659a599d68ba0b276 /tools/eclipse
parent7c88a3a468c960ae5fb6c2659354429e66820f8b (diff)
downloadChibiOS-ff7297b3bfd411e48b3134b5c0bf60e51fce6688.tar.gz
ChibiOS-ff7297b3bfd411e48b3134b5c0bf60e51fce6688.tar.bz2
ChibiOS-ff7297b3bfd411e48b3134b5c0bf60e51fce6688.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4513 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'tools/eclipse')
-rw-r--r--tools/eclipse/config_wizard/src/config_wizard/Activator.java88
-rw-r--r--tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/CheckDescription.java54
-rw-r--r--tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/GenerateFiles.java145
-rw-r--r--tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateEngine.java213
-rw-r--r--tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateException.java30
-rw-r--r--tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizard.java225
-rw-r--r--tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizardPage.java371
7 files changed, 0 insertions, 1126 deletions
diff --git a/tools/eclipse/config_wizard/src/config_wizard/Activator.java b/tools/eclipse/config_wizard/src/config_wizard/Activator.java
deleted file mode 100644
index 1f62c4f62..000000000
--- a/tools/eclipse/config_wizard/src/config_wizard/Activator.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
- 2011,2012 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package config_wizard;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class Activator extends AbstractUIPlugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "org.chibios.tools.eclipse.config"; //$NON-NLS-1$
-
- // The shared instance
- private static Activator plugin;
-
- /**
- * The constructor
- */
- public Activator() {
- }
-
- /*
- * (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 Activator getDefault() {
- return plugin;
- }
-
- /**
- * Returns an image descriptor for the image file at the given plug-in
- * relative path
- *
- * @param path
- * the path
- * @return the image descriptor
- */
- public static ImageDescriptor getImageDescriptor(String path) {
- return imageDescriptorFromPlugin(PLUGIN_ID, path);
- }
-}
diff --git a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/CheckDescription.java b/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/CheckDescription.java
deleted file mode 100644
index f9e8cd6bf..000000000
--- a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/CheckDescription.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
- 2011,2012 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-package org.chibios.tools.eclipse.config.handlers;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.jface.dialogs.MessageDialog;
-
-/**
- * Our sample handler extends AbstractHandler, an IHandler base class.
- * @see org.eclipse.core.commands.IHandler
- * @see org.eclipse.core.commands.AbstractHandler
- */
-public class CheckDescription extends AbstractHandler {
- /**
- * The constructor.
- */
- public CheckDescription() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information
- * from the application context.
- */
- public Object execute(ExecutionEvent event) throws ExecutionException {
- IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
- MessageDialog.openInformation(
- window.getShell(),
- "ChibiOS-RT_Configuration_Support",
- "Hello, Eclipse world");
- return null;
- }
-}
diff --git a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/GenerateFiles.java b/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/GenerateFiles.java
deleted file mode 100644
index af100f9fb..000000000
--- a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/handlers/GenerateFiles.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
- 2011,2012 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.chibios.tools.eclipse.config.handlers;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.chibios.tools.eclipse.config.utils.TemplateEngine;
-import org.chibios.tools.eclipse.config.utils.TemplateException;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.osgi.framework.Bundle;
-
-import config_wizard.Activator;
-
-/**
- * Our sample handler extends AbstractHandler, an IHandler base class.
- *
- * @see org.eclipse.core.commands.IHandler
- * @see org.eclipse.core.commands.AbstractHandler
- */
-public class GenerateFiles extends AbstractHandler {
-
- /**
- * The constructor.
- */
- public GenerateFiles() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information
- * from the application context.
- */
- public Object execute(ExecutionEvent event) throws ExecutionException {
-
- IWorkbenchWindow window = HandlerUtil
- .getActiveWorkbenchWindowChecked(event);
- ISelection selection = window.getSelectionService().getSelection();
- if (selection instanceof IStructuredSelection) {
-
- /* Retrieves the full path of the configuration file. */
- IPath cfgfilepath = ((IFile) ((IStructuredSelection) selection)
- .getFirstElement()).getLocation();
-
- /* Determines the base path as the parent of the configuration file.*/
- IPath basepath = cfgfilepath.removeLastSegments(1);
-
- /* Reads the configuration file into a Properties object. */
- Properties cfgfile = new Properties();
- try {
- cfgfile.load(new FileReader(cfgfilepath.toFile()));
- } catch (IOException e) {
- MessageDialog.openInformation(window.getShell(), "I/O Error",
- e.getMessage());
- return null;
- }
-
- /* Retrieves source property. */
- String source = cfgfile.getProperty("source");
- if (source == null) {
- MessageDialog.openInformation(window.getShell(), "Properties Error",
- "Property \"source\" not found in configuration file.");
- return null;
- }
-
- /* Retrieves xmlfile property. */
- String xmlfile = cfgfile.getProperty("xmlfile");
- if (xmlfile == null) {
- MessageDialog.openInformation(window.getShell(), "Properties Error",
- "Property \"xmlfile\" not found in configuration file.");
- return null;
- }
-
- /* Retrieves output property. */
- String output = cfgfile.getProperty("output");
- if (output == null) {
- MessageDialog.openInformation(window.getShell(), "Properties Error",
- "Property \"output\" not found in configuration file.");
- return null;
- }
-
- /* Calculating derived paths. */
- IPath sourcepath = new Path(source);
- IPath libpath = new Path("resources/gencfg/lib");
- try {
- Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
- sourcepath = new Path(FileLocator.toFileURL(
- FileLocator.find(bundle, sourcepath, null)).getFile());
- libpath = new Path(FileLocator.toFileURL(
- FileLocator.find(bundle, libpath, null)).getFile());
- } catch (IOException e) {
- MessageDialog.openInformation(window.getShell(), "Path Error",
- e.getMessage());
- return null;
- }
-
- /* Templates execution. */
- try {
- TemplateEngine.process(basepath.addTrailingSeparator().append(xmlfile)
- .toFile(), libpath.toFile(), sourcepath.toFile(),
- basepath.toFile(), new File(output));
- } catch (TemplateException e) {
- MessageDialog.openInformation(window.getShell(), "Processing Error",
- e.getMessage());
- return null;
- }
- }
- return null;
- }
-}
diff --git a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateEngine.java b/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateEngine.java
deleted file mode 100644
index 6c2771d9f..000000000
--- a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateEngine.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
- 2011,2012 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.chibios.tools.eclipse.config.utils;
-
-import java.io.IOException;
-import java.util.HashMap;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.console.ConsolePlugin;
-import org.eclipse.ui.console.IConsole;
-import org.eclipse.ui.console.IConsoleConstants;
-import org.eclipse.ui.console.IConsoleManager;
-import org.eclipse.ui.console.IConsoleView;
-import org.eclipse.ui.console.MessageConsole;
-import org.eclipse.ui.console.MessageConsoleStream;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-
-import fmpp.Engine;
-import fmpp.ProcessingException;
-import fmpp.ProgressListener;
-import fmpp.setting.SettingException;
-import fmpp.setting.Settings;
-import freemarker.ext.dom.NodeModel;
-import freemarker.template.TemplateNodeModel;
-
-/**
- * FMPP wrapper class.
- */
-public class TemplateEngine {
-
- private static final String CONSOLE_NAME = "ChibiOS/RT Configuration Tool";
-
- private static Settings settings;
- private static MessageConsoleStream out;
-
- /**
- * Runs the templates engine.
- *
- * @param xmldata
- * absolute path to XML data file
- * @param libdir
- * absolute path to libraries directory
- * @param sourcedir
- * absolute path to templates directory
- * @param basedir
- * absolute path to project directory
- * @param outputdir
- * output directory relative to basedir
- *
- * @throws SettingException
- * @throws ProcessingException
- */
- public static void process(java.io.File xmldata, java.io.File libdir,
- java.io.File sourcedir, java.io.File basedir,
- java.io.File outputdir) throws TemplateException {
-
- /* Finds or creates a named console. */
- MessageConsole console = findConsole(CONSOLE_NAME);
- activateConsole(console);
- console.clearConsole();
- out = console.newMessageStream();
-
- /*
- * Instantiates the FMPP Settings engine and associates a listener for
- * events to be logged.
- */
- try {
- settings = new Settings(basedir);
- } catch (SettingException e) {
- e.printStackTrace();
- return;
- }
- settings.addProgressListener(new ProgressListener() {
- public void notifyProgressEvent(Engine engine, int event,
- java.io.File src, int pMode,
- java.lang.Throwable error,
- java.lang.Object param) {
-
- if (pMode == Engine.PMODE_IGNORE)
- return;
-
- switch (event) {
- case EVENT_BEGIN_PROCESSING_SESSION:
- out.println("Starting session");
- break;
- case EVENT_END_PROCESSING_SESSION:
- out.println("Finished");
- break;
- case EVENT_BEGIN_FILE_PROCESSING:
- out.println("Processing " + src.getName());
- break;
- case EVENT_END_FILE_PROCESSING:
- break;
- case EVENT_IGNORING_DIR:
- out.println("Ignoring directory " + src.getName());
- break;
- case EVENT_SOURCE_NOT_MODIFIED:
- out.println("Skipping " + src.getName());
- break;
- case EVENT_WARNING:
- out.println("Warning:" + (String) param);
- break;
- }
- }
- });
-
- /* Loading data model. */
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- dbf.setNamespaceAware(true);
- dbf.setValidating(false);
- DocumentBuilder db;
- try {
- db = dbf.newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- throw new TemplateException(e.getMessage());
- }
- Document dom1;
- try {
- dom1 = db.parse(xmldata);
- } catch (SAXException e) {
- throw new TemplateException(e.getMessage());
- } catch (IOException e) {
- throw new TemplateException(e.getMessage());
- }
-
- NodeModel.removeComments(dom1);
- NodeModel.mergeAdjacentText(dom1);
- TemplateNodeModel doc1 = NodeModel.wrap(dom1);
-
- HashMap<String, TemplateNodeModel> xmls = new HashMap<String, TemplateNodeModel>();
- xmls.put("doc1", doc1);
-
- /* Setting libraries path. */
- HashMap<String, String> libs = new HashMap<String, String>();
- libs.put("lib", libdir.toString());
-
- /* Other settings. */
- try {
- settings.add("freemarkerLinks", libs);
- settings.add("data", xmls);
- settings.add("sourceRoot", sourcedir.toString());
- settings.add("outputRoot", outputdir.toString());
- settings.add("ignoreCvsFiles", true);
- settings.add("ignoreSvnFiles", true);
- } catch (SettingException e) {
- throw new TemplateException(e.getMessage());
- }
-
- /* Processor execution. */
- try {
- settings.execute();
- } catch (SettingException e) {
- throw new TemplateException(e.getMessage());
- } catch (ProcessingException e) {
- throw new TemplateException(e.getMessage());
- }
- }
-
- private static MessageConsole findConsole(String name) {
- ConsolePlugin plugin = ConsolePlugin.getDefault();
- IConsoleManager conMan = plugin.getConsoleManager();
- IConsole[] existing = conMan.getConsoles();
- for (int i = 0; i < existing.length; i++)
- if (name.equals(existing[i].getName()))
- return (MessageConsole) existing[i];
-
- /* No console found, so create a new one. */
- MessageConsole myConsole = new MessageConsole(name, null);
- conMan.addConsoles(new IConsole[] { myConsole });
- return myConsole;
- }
-
- private static void activateConsole(MessageConsole console) {
- IWorkbench wb = PlatformUI.getWorkbench();
- IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
- IWorkbenchPage page = win.getActivePage();
- IConsoleView view;
- try {
- view = (IConsoleView) page.showView(IConsoleConstants.ID_CONSOLE_VIEW);
- } catch (PartInitException e) {
- e.printStackTrace();
- return;
- }
- view.display(console);
- }
-}
diff --git a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateException.java b/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateException.java
deleted file mode 100644
index 73746de1d..000000000
--- a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/utils/TemplateException.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
- 2011,2012 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.chibios.tools.eclipse.config.utils;
-
-public class TemplateException extends Exception {
-
- private static final long serialVersionUID = -3317410595937500925L;
-
- public TemplateException(String msg) {
- super(msg);
- }
-}
diff --git a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizard.java b/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizard.java
deleted file mode 100644
index e6c309b43..000000000
--- a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizard.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
- 2011,2012 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.chibios.tools.eclipse.config.wizards;
-
-import java.lang.reflect.InvocationTargetException;
-import java.io.*;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.INewWizard;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.operation.*;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.ui.*;
-import org.eclipse.ui.ide.IDE;
-import org.osgi.framework.Bundle;
-
-import config_wizard.Activator;
-
-/**
- * This is a sample new wizard. Its role is to create a new file resource in the
- * provided container. If the container resource (a folder or a project) is
- * selected in the workspace when the wizard is opened, it will accept it as the
- * target container. The wizard creates one file with the extension "chcfg". If
- * a sample multi-page editor (also available as a template) is registered for
- * the same extension, it will be able to open it.
- */
-
-public class ConfigurationNewWizard extends Wizard implements INewWizard {
- private ConfigurationNewWizardPage page;
- private ISelection selection;
-
- private String containerName;
- private String projectFileName;
- private String dataFileName;
- private String templatesPath;
- private String outputDirName;
- private String defaultDataFile;
-
- /**
- * Constructor for ConfigurationNewWizard.
- */
- public ConfigurationNewWizard() {
- super();
- setNeedsProgressMonitor(true);
- }
-
- /**
- * Adding the page to the wizard.
- */
- public void addPages() {
- page = new ConfigurationNewWizardPage(selection);
- addPage(page);
- }
-
- /**
- * Checks if the wizard page allows to finish.
- */
- public boolean canFinish() {
-
- return page.canFinish();
- }
-
- /**
- * This method is called when 'Finish' button is pressed in the wizard. We
- * will create an operation and run it using wizard as execution context.
- */
- public boolean performFinish() {
-
- containerName = page.getContainerName();
- projectFileName = page.getProjectFileName();
- dataFileName = page.getDataFileName();
- templatesPath = page.getTemplatesPath();
- outputDirName = page.getOutputDirName();
- defaultDataFile = page.getDefaultDataFile();
-
- IRunnableWithProgress op = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor)
- throws InvocationTargetException {
- try {
- doFinish(monitor);
- } catch (CoreException e) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
- }
- }
- };
- try {
- getContainer().run(true, false, op);
- } catch (InterruptedException e) {
- return false;
- } catch (InvocationTargetException e) {
- Throwable realException = e.getTargetException();
- MessageDialog.openError(getShell(), "Error", realException.getMessage());
- return false;
- }
- return true;
- }
-
- /**
- * The worker method. It will find the container, create the file if missing
- * or just replace its contents, and open the editor on the newly created
- * file.
- */
- private void doFinish(IProgressMonitor monitor) throws CoreException {
-
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IResource resource = root.findMember(new Path(containerName));
- if (!resource.exists() || !(resource instanceof IContainer)) {
- throwCoreException("Container \"" + containerName + "\" does not exist.");
- }
- IContainer container = (IContainer)resource;
- monitor.beginTask("Creating " + projectFileName, 4);
-
- /* Step #1, creates the project file.*/
- final IFile projectFile = container.getFile(new Path(projectFileName));
- try {
- InputStream stream = openProjectContentStream(templatesPath,
- dataFileName,
- outputDirName);
- if (projectFile.exists()) {
- projectFile.setContents(stream, true, true, monitor);
- } else {
- projectFile.create(stream, true, monitor);
- }
- stream.close();
- } catch (IOException e) {
- }
- monitor.worked(1);
-
- /* Step #2, creates the XML data file.*/
- final IFile dataFile = container.getFile(new Path(dataFileName));
- Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
- IPath path = new Path(defaultDataFile);
- String s;
- try {
- s = FileLocator.toFileURL(FileLocator.find(bundle, path, null)).getFile();
- InputStream stream = new FileInputStream(s);
- if (dataFile.exists()) {
- dataFile.setContents(stream, true, true, monitor);
- } else {
- dataFile.create(stream, true, monitor);
- }
- stream.close();
- } catch (IOException e) {
- }
- monitor.worked(1);
-
- /* Step #2, opens the XML data file.*/
- monitor.setTaskName("Opening XML data file for editing...");
- getShell().getDisplay().asyncExec(new Runnable() {
- public void run() {
- IWorkbenchPage page = PlatformUI.getWorkbench()
- .getActiveWorkbenchWindow().getActivePage();
- try {
- IDE.openEditor(page, projectFile, true);
- } catch (PartInitException e) {
- }
- }
- });
- monitor.worked(1);
-
- /* Step #4, refreshing local resources.*/
- container.refreshLocal(IResource.DEPTH_INFINITE, monitor);
- monitor.worked(1);
- }
-
- /**
- * We will initialize file contents with a sample text.
- */
- private InputStream openProjectContentStream(String templatesPath,
- String dataFileName,
- String outputDirName) {
-
- String contents = "# Automatically generated configuration project file.\n\n" +
- "# Templates path in the configuration plugin resources, do not modify.\n" +
- "source=" + templatesPath + "\n\n" +
- "# XML configuration data file path relative to this configuration file.\n" +
- "xmlfile=" + dataFileName + "\n\n" +
- "# Output directory path relative to directory containing this configuration\n" +
- "# file.\n" +
- "output=" + outputDirName + "\n";
- return new ByteArrayInputStream(contents.getBytes());
- }
-
- private void throwCoreException(String message) throws CoreException {
- IStatus status = new Status(IStatus.ERROR,
- "org.chibios.tools.eclipse.config", IStatus.OK,
- message, null);
- throw new CoreException(status);
- }
-
- /**
- * We will accept the selection in the workbench to see if we can initialize
- * from it.
- *
- * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection)
- */
- public void init(IWorkbench workbench, IStructuredSelection selection) {
- this.selection = selection;
- }
-}
diff --git a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizardPage.java b/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizardPage.java
deleted file mode 100644
index 599c17af0..000000000
--- a/tools/eclipse/config_wizard/src/org/chibios/tools/eclipse/config/wizards/ConfigurationNewWizardPage.java
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
- 2011,2012 Giovanni Di Sirio.
-
- This file is part of ChibiOS/RT.
-
- ChibiOS/RT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- ChibiOS/RT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.chibios.tools.eclipse.config.wizards;
-
-import java.io.IOException;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Combo;
-
-import org.osgi.framework.Bundle;
-
-import org.jdom2.Document;
-import org.jdom2.Element;
-import org.jdom2.JDOMException;
-import org.jdom2.input.SAXBuilder;
-
-import config_wizard.Activator;
-
-/**
- * The "New" wizard page allows setting the container for the new file as well
- * as the file name. The page will only accept file name without the extension
- * OR with the extension that matches the expected one (chcfg).
- */
-
-public class ConfigurationNewWizardPage extends WizardPage {
-
- private ISelection selection;
- private IContainer resourceContainer;
-
- private Document processorsDocument;
- private String currentTemplatesPath;
- private String currentDefaultDataFile;
-
- private Composite container;
- private Combo configurationTemplatesCombo;
- private Text confProjectFilenameText;
- private Text confDataFilenameText;
- private Text confOutputDirectoryText;
-
- /**
- * Constructor for SampleNewWizardPage.
- *
- * @param pageName
- */
- public ConfigurationNewWizardPage(ISelection selection) {
-
- super("wizardPage");
- setTitle("ChibiOS/RT Configuration Project File");
- setDescription("This wizard creates a ChibiOS/RT configuration resource. Configuration resources allow to generate project resources starting from high level descriptions written in XML.");
- this.selection = selection;
- }
-
- /**
- * @see IDialogPage#createControl(Composite)
- */
- public void createControl(Composite parent) {
- container = new Composite(parent, SWT.NULL);
- GridLayout layout = new GridLayout();
- container.setLayout(layout);
- layout.numColumns = 2;
- layout.verticalSpacing = 9;
-
- Label lbl1 = new Label(container, SWT.NULL);
- lbl1.setText("Configuration template:");
-
- configurationTemplatesCombo = new Combo(container, SWT.READ_ONLY);
- configurationTemplatesCombo.setLayoutData(new GridData(SWT.FILL,
- SWT.CENTER, true,
- false, 1, 1));
-
- Label lbl2 = new Label(container, SWT.NULL);
- lbl2.setText("Configuration project filename:");
-
- confProjectFilenameText = new Text(container, SWT.BORDER | SWT.SINGLE);
- confProjectFilenameText.setText("config.chcfg");
- confProjectFilenameText
- .setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- confProjectFilenameText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- confProjectFilenameUpdated();
- }
- });
-
- Label lbl3 = new Label(container, SWT.NONE);
- lbl3.setText("Configuration data filename:");
-
- confDataFilenameText = new Text(container, SWT.BORDER);
- confDataFilenameText.setText("config.chxml");
- confDataFilenameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
- false, 1, 1));
- confDataFilenameText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- confDataFilenameUpdated();
- }
- });
-
- Label lbl4 = new Label(container, SWT.NONE);
- lbl4.setText("Configuration output directory:");
-
- confOutputDirectoryText = new Text(container, SWT.BORDER);
- confOutputDirectoryText.setText(".");
- confOutputDirectoryText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER,
- true, false, 1, 1));
-
- /* Note, it must stay after the creation of the text fields. */
- configurationTemplatesCombo.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- Element processor = getSelectedTemplate();
- String basefilename = processor.getChildText("basefilename");
- confProjectFilenameText.setText(basefilename.concat(".chcfg"));
- confDataFilenameText.setText(basefilename.concat(".chxml"));
- currentTemplatesPath = processor.getChildText("path");
- currentDefaultDataFile = processor.getChildText("default");
- }
- });
- confOutputDirectoryText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- confOutputDirectoryUpdated();
- }
- });
-
- populateWizardPanel();
- initialize();
- setControl(container);
- }
-
- public String getContainerName() {
-
- return resourceContainer.getFullPath().toString();
- }
-
- public String getProjectFileName() {
-
- return confProjectFilenameText.getText();
- }
-
- public String getDataFileName() {
-
- return confDataFilenameText.getText();
- }
-
- public String getOutputDirName() {
-
- return confOutputDirectoryText.getText();
- }
-
- public String getTemplatesPath() {
-
- return currentTemplatesPath;
- }
-
- public String getDefaultDataFile() {
-
- return currentDefaultDataFile;
- }
-
- public boolean canFinish() {
-
- return container.getEnabled();
- }
-
- /**
- * Tests if the current workbench selection is a suitable container to use.
- */
- private void initialize() {
-
- if (selection != null && selection.isEmpty() == false
- && selection instanceof IStructuredSelection) {
- IStructuredSelection ssel = (IStructuredSelection) selection;
- if (ssel.size() > 1)
- return;
- Object obj = ssel.getFirstElement();
- if (obj instanceof IResource) {
- if (obj instanceof IContainer)
- resourceContainer = (IContainer) obj;
- else
- resourceContainer = ((IResource) obj).getParent();
- }
- }
- else {
- MessageDialog.openError(getShell(),
- "Error", "Container for the resource not selected.");
- container.setEnabled(false);
- updateStatus("Container for the resource not selected.");
- }
- }
-
- /**
- * Fills the wizard configuration panel from XML data.
- *
- * @param configurationTemplateCombo
- * the combo box to be populated
- */
- private void populateWizardPanel() {
- String fpath;
-
- /* Retrieving the resource path of the processors.xml file. */
- try {
- Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
- IPath path = new Path("resources/gencfg/processors/processors.xml");
- fpath = FileLocator.toFileURL(FileLocator.find(bundle, path, null))
- .getFile();
- } catch (IOException e) {
- e.printStackTrace();
- return;
- }
-
- /* DOM tree creation. */
- SAXBuilder builder = new SAXBuilder();
- try {
- processorsDocument = builder.build(fpath);
- } catch (JDOMException e) {
- e.printStackTrace();
- return;
- } catch (IOException e) {
- e.printStackTrace();
- return;
- }
-
- /*
- * Parsing the content of the processors.xml file in order to populate the
- * panel objects.
- */
- Element root = processorsDocument.getRootElement();
- for (Element processor : root.getChildren("processor")) {
- String name = processor.getChildText("name");
- configurationTemplatesCombo.add(name);
- }
- configurationTemplatesCombo.select(0);
- }
-
- /**
- * Checks the content of the confProjectFilenameText field.
- */
- private void confProjectFilenameUpdated() {
- String fileName = getProjectFileName();
-
- if (fileName.length() == 0) {
- updateStatus("File name must be specified");
- return;
- }
- if (fileName.replace('\\', '/').indexOf('/', 1) > 0) {
- updateStatus("File name must be valid");
- return;
- }
- int dotLoc = fileName.lastIndexOf('.');
- if (dotLoc != -1) {
- String ext = fileName.substring(dotLoc + 1);
- if (ext.equalsIgnoreCase("chcfg") == false) {
- updateStatus("Configuration project filename extension must be \"chcfg\"");
- return;
- }
- }
- updateStatus(null);
- }
-
- /**
- * Checks the content of the confProjectFilenameText field.
- */
- private void confDataFilenameUpdated() {
- String fileName = getDataFileName();
-
- if (fileName.length() == 0) {
- updateStatus("File name must be specified");
- return;
- }
- if (fileName.replace('\\', '/').indexOf('/', 1) > 0) {
- updateStatus("File name must be valid");
- return;
- }
- int dotLoc = fileName.lastIndexOf('.');
- if (dotLoc != -1) {
- String ext = fileName.substring(dotLoc + 1);
- if (ext.equalsIgnoreCase("chxml") == false) {
- updateStatus("Configuration project filename extension must be \"chxml\"");
- return;
- }
- }
- updateStatus(null);
- }
-
- /**
- * Checks the content of the confOutputDirectoryText field.
- */
- private void confOutputDirectoryUpdated() {
-
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IPath outputPath = resourceContainer.getFullPath().addTrailingSeparator()
- .append(getOutputDirName());
- IResource outputContainer = root.findMember(outputPath);
-
- if (outputContainer == null) {
- updateStatus("The directory must exists");
- return;
- }
- if (!(outputContainer instanceof IContainer)) {
- updateStatus("A directory must be specified");
- return;
- }
- updateStatus(null);
- }
-
- /**
- * Returns the XML Element associated to the current selection in the combo
- * box.
- *
- * @return An Element Object.
- */
- private Element getSelectedTemplate() {
-
- for (Element processor : processorsDocument.getRootElement()
- .getChildren("processor")) {
- String name = processor.getChildText("name");
- String item = configurationTemplatesCombo
- .getItem(configurationTemplatesCombo.getSelectionIndex());
- if (name.compareTo(item) == 0) {
- return processor;
- }
- }
- return null;
- }
-
- /**
- * Updates the status text in the Wizard page.
- *
- * @param message
- * the message to be shown
- */
- private void updateStatus(String message) {
-
- setErrorMessage(message);
- setPageComplete(message == null);
- }
-}