calculateGeneratorRequiredParams() {
allRequiredParams.putAll(nestedGenerator.calculateRequiredParams());
}
+ //allRequiredParams.putAll(generator.calculateEclipseParams());
+
for (String key : paramsConfig.getParams().keySet()) {
allRequiredParams.remove(key);
}
diff --git a/code2code/src/code2code/core/templateengine/FreemarkerTemplateEngine.java b/code2code/src/code2code/core/templateengine/FreemarkerTemplateEngine.java
index 89dec8c..9a81c96 100644
--- a/code2code/src/code2code/core/templateengine/FreemarkerTemplateEngine.java
+++ b/code2code/src/code2code/core/templateengine/FreemarkerTemplateEngine.java
@@ -9,7 +9,6 @@
import java.util.Map;
import code2code.core.generator.Generator;
-
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import freemarker.cache.StringTemplateLoader;
diff --git a/code2code/src/code2code/core/templateengine/GroovyTemplateEngine.java b/code2code/src/code2code/core/templateengine/GroovyTemplateEngine.java
index edaab97..816b5f5 100644
--- a/code2code/src/code2code/core/templateengine/GroovyTemplateEngine.java
+++ b/code2code/src/code2code/core/templateengine/GroovyTemplateEngine.java
@@ -1,5 +1,9 @@
package code2code.core.templateengine;
+import groovy.lang.Writable;
+import groovy.text.SimpleTemplateEngine;
+import groovy.text.Template;
+
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
@@ -8,10 +12,6 @@
import code2code.core.generator.Generator;
import code2code.utils.FileUtils;
-import groovy.lang.Writable;
-import groovy.text.SimpleTemplateEngine;
-import groovy.text.Template;
-
public class GroovyTemplateEngine extends AbstractTemplateEngine implements TemplateEngine {
@Override
diff --git a/code2code/src/code2code/preferences/PreferenceConstants.java b/code2code/src/code2code/preferences/PreferenceConstants.java
new file mode 100644
index 0000000..f8871bc
--- /dev/null
+++ b/code2code/src/code2code/preferences/PreferenceConstants.java
@@ -0,0 +1,11 @@
+package code2code.preferences;
+
+/**
+ * Constant definitions for plug-in preferences
+ */
+public class PreferenceConstants {
+
+ public static final String DIR_NAME = "generatorsDirName";
+ public static final String GUI_STYLE = "guiStyle";
+
+}
diff --git a/code2code/src/code2code/preferences/PreferenceInitializer.java b/code2code/src/code2code/preferences/PreferenceInitializer.java
new file mode 100644
index 0000000..841bfbe
--- /dev/null
+++ b/code2code/src/code2code/preferences/PreferenceInitializer.java
@@ -0,0 +1,25 @@
+package code2code.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import code2code.Activator;
+
+
+/**
+ * Class used to initialize default preference values.
+ */
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ store.setDefault(PreferenceConstants.DIR_NAME,
+ "generators");
+ }
+
+}
diff --git a/code2code/src/code2code/preferences/PreferencePage.java b/code2code/src/code2code/preferences/PreferencePage.java
new file mode 100644
index 0000000..3729728
--- /dev/null
+++ b/code2code/src/code2code/preferences/PreferencePage.java
@@ -0,0 +1,56 @@
+package code2code.preferences;
+
+import org.eclipse.jface.preference.ComboFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import code2code.Activator;
+
+/**
+ * This class represents a preference page that is contributed to the
+ * Preferences dialog. By subclassing FieldEditorPreferencePage, we
+ * can use the field support built into JFace that allows us to create a page
+ * that is small and knows how to save, restore and apply itself.
+ *
+ * This page is used to modify preferences only. They are stored in the
+ * preference store that belongs to the main plug-in class. That way,
+ * preferences can be accessed directly via the preference store.
+ */
+
+public class PreferencePage extends FieldEditorPreferencePage implements
+ IWorkbenchPreferencePage {
+
+ public PreferencePage() {
+ super(GRID);
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription("Configure nnn.code2code");
+ }
+
+ /**
+ * Creates the field editors. Field editors are abstractions of the common
+ * GUI blocks needed to manipulate various types of preferences. Each field
+ * editor knows how to save and restore itself.
+ */
+ public void createFieldEditors() {
+ addField(new ComboFieldEditor(PreferenceConstants.GUI_STYLE,
+ "Gui &style", new String[][] {
+ new String[] { "original", "original" },
+ new String[] { "tree", "tree" } },
+ getFieldEditorParent()));
+
+ addField(new StringFieldEditor(PreferenceConstants.DIR_NAME,
+ "The generators &dirname:", getFieldEditorParent()));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ */
+ public void init(IWorkbench workbench) {
+ }
+
+}
\ No newline at end of file
diff --git a/code2code/src/code2code/ui/wizards/generate/GenerateFilesWizard.java b/code2code/src/code2code/ui/wizards/generate/GenerateFilesWizard.java
index 8cb9f89..8154d1d 100644
--- a/code2code/src/code2code/ui/wizards/generate/GenerateFilesWizard.java
+++ b/code2code/src/code2code/ui/wizards/generate/GenerateFilesWizard.java
@@ -1,5 +1,9 @@
package code2code.ui.wizards.generate;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
@@ -17,7 +21,6 @@
import code2code.utils.EclipseGuiUtils;
import code2code.utils.FileUtils;
-
public class GenerateFilesWizard extends Wizard implements INewWizard {
private IStructuredSelection selection;
@@ -25,94 +28,142 @@ public class GenerateFilesWizard extends Wizard implements INewWizard {
private GeneratorParametersPage generatorParametersPage;
private IWorkbench workbench;
private GenerationCustomizationPage generationCustomizationPage;
-
+ private GenerationPostActionsPage generationPostActionsPage;
+
@Override
public boolean performFinish() {
-
- Generator selectedGenerator = generatorSelectionPage.getSelectedGenerator();
-
- if(selectedGenerator==null){
+
+ Generator selectedGenerator = generatorSelectionPage
+ .getSelectedGenerator();
+
+ if (selectedGenerator == null) {
return false;
}
-
+
try {
- Console.write("Processing generator: " + selectedGenerator.getName());
-
- IProject project = selectedGenerator.getGeneratorFolder().getProject();
-
- for (Template template : selectedGenerator.calculateChoosenTemplatesToGenerate()) {
-
+ Console.write("Processing generator: "
+ + selectedGenerator.getName());
+
+ IProject project = selectedGenerator.getGeneratorFolder()
+ .getProject();
+
+ List projectfiles = new ArrayList();
+ for (Template template : selectedGenerator
+ .calculateChoosenTemplatesToGenerate()) {
+
String destination = template.calculateDestination();
-
- if(destination.equals("")){
- Console.write("Generating " + template.getTemplateName() + " to console:");
+
+ if (destination.equals("")) {
+ Console.write("Generating " + template.getTemplateName()
+ + " to console:");
Console.write("-------------------------------------------------------------");
Console.write(FileUtils.read(template.calculateResult()));
Console.write("-------------------------------------------------------------");
- }else{
+ } else {
Path destinationPath = new Path(destination);
- if(project.exists(destinationPath)){
- Console.write("File already exists. Skipping: " + destinationPath);
- continue;
- }
-
- Console.write("Generating: " + template.getTemplateName() + " to " + destination);
-
+
IFile file = project.getFile(destinationPath);
-
+
+ if (project.exists(destinationPath)) {
+ if (!template.isOverwriteAllowed()
+ && !projectfiles.contains(file)) {
+
+ Console.write("File already exists. Skipping: "
+ + destinationPath);
+ continue;
+ } else {
+ Console.write("File already exists. Overwriting: "
+ + destinationPath);
+
+ }
+ }
+
+ Console.write("Generating: " + template.getTemplateName()
+ + " to " + destination);
+
+ IContainer parent = file.getParent();
+ while (parent != null) {
+ if (parent instanceof IProject) {
+ IProject p = (IProject) parent;
+ boolean exists = p.exists();
+ if (!exists) {
+ p.create(null);
+ }
+ if (!p.isOpen()) {
+ p.open(null);
+ }
+ if (!exists) {
+ // we must indicate if .project must be
+ // overwrited
+ IFile f = p.getFile(".project");
+ projectfiles.add(f);
+ }
+ }
+ parent = parent.getParent();
+ }
FileUtils.createParentFolders(file);
-
- file.create(template.calculateResult(), false, null);
-
+
+ if (file.exists()) {
+ file.setContents(template.calculateResult(), false,
+ true, null);
+ } else {
+ file.create(template.calculateResult(), false, null);
+ }
+
}
-
-
+
}
Console.write("Done");
-
+
} catch (Exception e) {
- try{
+ try {
Console.write("An error ocurred. See Error Log for details");
- }catch (Exception e2) {
- EclipseGuiUtils.showErrorDialog(workbench.getActiveWorkbenchWindow().getShell(), e2);
+ } catch (Exception e2) {
+ EclipseGuiUtils.showErrorDialog(workbench
+ .getActiveWorkbenchWindow().getShell(), e2);
throw new RuntimeException(e2);
}
- EclipseGuiUtils.showErrorDialog(workbench.getActiveWorkbenchWindow().getShell(), e);
+ EclipseGuiUtils.showErrorDialog(workbench
+ .getActiveWorkbenchWindow().getShell(), e);
throw new RuntimeException(e);
- }finally{
+ } finally {
Console.disposeConsole();
}
-
+
return true;
}
-
public void init(IWorkbench workbench, IStructuredSelection selection) {
this.workbench = workbench;
this.selection = selection;
}
-
+
@Override
public void addPages() {
-
- if(selection.size() == 0){
- MessageDialog.openError(workbench.getActiveWorkbenchWindow().getShell(), "Ops", "Ops... No Project Selected");
- throw new IllegalStateException("Ops... a project should be selected");
+
+ if (selection.size() == 0) {
+ MessageDialog.openError(workbench.getActiveWorkbenchWindow()
+ .getShell(), "Ops", "Ops... No Project Selected");
+ throw new IllegalStateException(
+ "Ops... a project should be selected");
}
-
- IProject project = ((IResource) ((IAdaptable)selection.getFirstElement()).getAdapter(IResource.class)).getProject();
-
+
+ IProject project = ((IResource) ((IAdaptable) selection
+ .getFirstElement()).getAdapter(IResource.class)).getProject();
+
generatorSelectionPage = new GeneratorSelectionPage(project);
- generatorParametersPage = new GeneratorParametersPage(generatorSelectionPage);
- generationCustomizationPage = new GenerationCustomizationPage(generatorParametersPage);
-
+ generatorParametersPage = new GeneratorParametersPage(
+ generatorSelectionPage);
+ generationCustomizationPage = new GenerationCustomizationPage(
+ generatorParametersPage);
+ generationPostActionsPage = new GenerationPostActionsPage(generatorParametersPage);
+
addPage(generatorSelectionPage);
addPage(generatorParametersPage);
addPage(generationCustomizationPage);
-
+ addPage(generationPostActionsPage);
+
}
-
-
}
diff --git a/code2code/src/code2code/ui/wizards/generate/GenerationCustomizationComposite.java b/code2code/src/code2code/ui/wizards/generate/GenerationCustomizationComposite.java
index ab884c5..30e2326 100644
--- a/code2code/src/code2code/ui/wizards/generate/GenerationCustomizationComposite.java
+++ b/code2code/src/code2code/ui/wizards/generate/GenerationCustomizationComposite.java
@@ -58,7 +58,7 @@ public GenerationCustomizationComposite(final List results, Composite
Composite container = new Composite(scroll, SWT.NONE);
GridLayout layout = new GridLayout();
- layout.numColumns = 3;
+ layout.numColumns = 4;
container.setLayout(layout);
@@ -137,6 +137,22 @@ public void widgetSelected(SelectionEvent e) {
}
});
+ Button overwritecheckbox = new Button(container, SWT.CHECK);
+ overwritecheckbox.setSelection(false);
+ overwritecheckbox.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ try {
+ result.setOverwriteAllowed(((Button)event.widget).getSelection());
+ } catch (Exception e) {
+ EclipseGuiUtils.showErrorDialog(GenerationCustomizationComposite.this.getShell(), e);
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ overwritecheckbox.setText("overwrite?");
+ overwritecheckbox.setToolTipText("Allow to overwrite if file exists soon");
+
}
diff --git a/code2code/src/code2code/ui/wizards/generate/GenerationPostActionsComposite.java b/code2code/src/code2code/ui/wizards/generate/GenerationPostActionsComposite.java
new file mode 100644
index 0000000..62664ba
--- /dev/null
+++ b/code2code/src/code2code/ui/wizards/generate/GenerationPostActionsComposite.java
@@ -0,0 +1,124 @@
+package code2code.ui.wizards.generate;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+import code2code.core.generator.Template;
+import code2code.utils.EclipseGuiUtils;
+
+
+public class GenerationPostActionsComposite extends Composite {
+
+ public static void main(String[] args) throws Exception {
+
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setLayout(new FillLayout(SWT.VERTICAL| SWT.HORIZONTAL));
+
+ GenerationPostActionsComposite c = new GenerationPostActionsComposite(new ArrayList(), shell, SWT.NULL);
+
+ c.pack();
+ c.setVisible(true);
+
+ shell.open();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ display.dispose();
+ }
+
+
+ public GenerationPostActionsComposite(final List results, Composite parent, int style) throws Exception {
+ super(parent, style);
+
+ this.setLayout(new FillLayout(SWT.VERTICAL| SWT.HORIZONTAL));
+
+ ScrolledComposite scroll = new ScrolledComposite(this, SWT.V_SCROLL | SWT.H_SCROLL);
+
+ scroll.setExpandVertical(true);
+ scroll.setExpandHorizontal(true);
+
+ Composite container = new Composite(scroll, SWT.NONE);
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ container.setLayout(layout);
+
+
+
+// for (int i = 0; i < 10; i++) {
+//
+// Button checkbox1 = new Button(container, SWT.CHECK);
+// checkbox1.setSelection(true);
+// checkbox1.setText("teste");
+// checkbox1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+//
+// Text text1 = new Text(container, SWT.BORDER);
+// text1.setText("teste");
+// text1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+//
+// Button previewButton1 = new Button(container, SWT.PUSH);
+// previewButton1.setText("Preview...");
+//
+// }
+
+
+ for (final Template result : results) {
+
+ final String templateName = result.getTemplateName();
+
+ Button checkbox = new Button(container, SWT.CHECK);
+ checkbox.setSelection(true);
+ checkbox.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ try {
+ result.setSelectedToGenerate(((Button)event.widget).getSelection());
+ } catch (Exception e) {
+ EclipseGuiUtils.showErrorDialog(GenerationPostActionsComposite.this.getShell(), e);
+ throw new RuntimeException(e);
+ }
+ }
+ });
+
+ checkbox.setText(templateName);
+ checkbox.setToolTipText(templateName);
+ checkbox.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+ Text text = new Text(container, SWT.BORDER);
+ text.setText(result.calculateDestination());
+
+ text.addModifyListener(new ModifyListener(){
+ public void modifyText(ModifyEvent e) {
+ result.setUserChoosenDestination(((Text)e.widget).getText());
+ }
+ });
+ text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+
+
+ }
+
+
+ scroll.setMinSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ scroll.setContent(container);
+ }
+
+
+}
diff --git a/code2code/src/code2code/ui/wizards/generate/GenerationPostActionsPage.java b/code2code/src/code2code/ui/wizards/generate/GenerationPostActionsPage.java
new file mode 100644
index 0000000..c307807
--- /dev/null
+++ b/code2code/src/code2code/ui/wizards/generate/GenerationPostActionsPage.java
@@ -0,0 +1,73 @@
+package code2code.ui.wizards.generate;
+
+import java.util.List;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+
+import code2code.core.generator.Generator;
+import code2code.core.generator.Template;
+import code2code.utils.EclipseGuiUtils;
+
+
+public class GenerationPostActionsPage extends WizardPage {
+
+ private Composite container;
+ private Composite contents;
+ private GeneratorParametersPage generatorParametersPage;
+ private Composite parent;
+
+ public GenerationPostActionsPage(GeneratorParametersPage generatorParametersPage) {
+ super("Templates Selection", "Customize Post-actions", null);
+ this.generatorParametersPage = generatorParametersPage;
+ setPageComplete(true);
+ }
+
+ public void createControl(Composite parent) {
+ this.parent = parent;
+ container = new Composite(parent, SWT.NONE);
+ container.setLayout(new FillLayout(SWT.VERTICAL| SWT.HORIZONTAL));
+
+ setControl(container);
+
+ EclipseGuiUtils.scaleShellToClientArea(parent.getShell(), 0.8);
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+
+ if (visible) {
+ try {
+ createPage();
+ } catch (Exception e) {
+ EclipseGuiUtils.showErrorDialog(container.getShell(), e);
+ throw new RuntimeException(e);
+ }
+ }
+
+ super.setVisible(visible);
+ }
+
+
+ private void createPage() throws Exception {
+
+ if(contents != null){
+ contents.dispose();
+ }
+
+ final Generator selectedGenerator = generatorParametersPage.getSelectedGenerator();
+
+ List templates = selectedGenerator.getPostActions();
+
+ contents = new GenerationPostActionsComposite(templates, container, SWT.NULL);
+
+ container.pack();
+ parent.layout();
+
+ container.setVisible(true);
+
+ }
+
+}
diff --git a/code2code/src/code2code/ui/wizards/generate/GeneratorParametersPage.java b/code2code/src/code2code/ui/wizards/generate/GeneratorParametersPage.java
index a88e31e..cc5d7fa 100644
--- a/code2code/src/code2code/ui/wizards/generate/GeneratorParametersPage.java
+++ b/code2code/src/code2code/ui/wizards/generate/GeneratorParametersPage.java
@@ -1,5 +1,7 @@
package code2code.ui.wizards.generate;
+import java.io.FileReader;
+import java.io.FileWriter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
@@ -11,8 +13,11 @@
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
@@ -20,15 +25,15 @@
import code2code.core.generator.Generator;
import code2code.utils.EclipseGuiUtils;
-
public class GeneratorParametersPage extends WizardPage {
+ private static final String TOOLTIP = "tooltip=";
private Composite container;
private Composite paramsContainer;
List paramsTexts;
private final GeneratorSelectionPage generatorSelectionPage;
private Generator selectedGenerator;
-
+
public GeneratorParametersPage(GeneratorSelectionPage generatorSelectionPage) {
super("Generator Parameters", "Configure Params", null);
this.generatorSelectionPage = generatorSelectionPage;
@@ -37,12 +42,11 @@ public GeneratorParametersPage(GeneratorSelectionPage generatorSelectionPage) {
public void createControl(Composite parent) {
-
- ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL);
+ ScrolledComposite scrolledComposite = new ScrolledComposite(parent,
+ SWT.H_SCROLL | SWT.V_SCROLL);
container = new Composite(scrolledComposite, SWT.NONE);
scrolledComposite.setContent(container);
-
GridLayout layout = new GridLayout();
layout.numColumns = 1;
container.setLayout(layout);
@@ -65,60 +69,133 @@ public void setVisible(boolean visible) {
super.setVisible(visible);
}
- private void recreatePageIfNecessary() throws Exception{
+ private void recreatePageIfNecessary() throws Exception {
+
+ if (!pageIsCreated() || hasGeneratorChanged()) {
- if(!pageIsCreated() || hasGeneratorChanged()){
-
selectedGenerator = generatorSelectionPage.getSelectedGenerator();
- if(paramsContainer!=null){
+ if (paramsContainer != null) {
paramsContainer.dispose();
}
-
+
createPage();
}
-
+
}
private boolean hasGeneratorChanged() {
- return selectedGenerator != generatorSelectionPage.getSelectedGenerator();
+ return selectedGenerator != generatorSelectionPage
+ .getSelectedGenerator();
}
private boolean pageIsCreated() {
return paramsContainer != null;
}
-
-
-
+
private void createPage() throws Exception {
-
+
paramsTexts = new ArrayList();
-
+
paramsContainer = new Composite(container, SWT.NULL);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
paramsContainer.setLayout(layout);
- Map params = generatorSelectionPage.getSelectedGenerator().calculateRequiredParams();
-
- setDescription(generatorSelectionPage.getSelectedGenerator().getDescription());
-
- if(params.size() > 0){
+ Map params = generatorSelectionPage
+ .getSelectedGenerator().calculateRequiredParams();
+
+ setDescription(generatorSelectionPage.getSelectedGenerator()
+ .getDescription());
+
+ if (params.size() > 0) {
createParamsTexts(params);
- }else{
-
+ //regenerate value if tooltip used
+ getSelectedGenerator().setUserConfiguredParams(
+ createParamsMap());
+ } else {
+
Label label = new Label(paramsContainer, SWT.NONE);
label.setText("This Generator has no params to configure");
-
+ Label label2 = new Label(paramsContainer, SWT.NONE);
+ label2.setText(".");
+
}
-
+ Map eclipseParams = generatorSelectionPage.getSelectedGenerator().calculateEclipseParams();
+ for(Map.Entry p:eclipseParams.entrySet()){
+ new Label(paramsContainer,SWT.NONE).setText(p.getKey());
+ new Label(paramsContainer,SWT.NONE).setText(p.getValue());
+ }
+
+ Button load = new Button(paramsContainer, SWT.NONE);
+ load.setText("Load");
+ load.setToolTipText("Load from previous save");
+ load.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+
+ String filename;
+ try {
+ filename = EclipseGuiUtils.openFileDialog(
+ GeneratorParametersPage.this.getShell(),
+ "Generator params", "*.generatorparams");
+ if (filename != null) {
+ java.util.Properties p = new java.util.Properties();
+ p.load(new FileReader(filename));
+ for (Text text : paramsTexts) {
+ final String key = (String) text
+ .getData("paramName");
+ if (p.containsKey(key)) {
+ text.setText(p.getProperty(key));
+ }
+ }
+ }
+ } catch (Exception e1) {
+ EclipseGuiUtils.showErrorDialog(
+ GeneratorParametersPage.this.getShell(), e1);
+ }
+
+ }
+ });
+
+ Button save = new Button(paramsContainer, SWT.NONE);
+ save.setText("Save");
+ save.setToolTipText("Save for later use");
+ save.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+
+ String filename;
+ try {
+ filename = EclipseGuiUtils.saveFileDialog(
+ GeneratorParametersPage.this.getShell(),
+ "Generator params", "*.generatorparams");
+ if (filename != null) {
+ java.util.Properties p = new java.util.Properties();
+ for (Text text : paramsTexts) {
+ p.put((String) text.getData("paramName"),
+ text.getText());
+ }
+ p.store(new FileWriter(filename),
+ "code2code generator params");
+ }
+ } catch (Exception e1) {
+ EclipseGuiUtils.showErrorDialog(
+ GeneratorParametersPage.this.getShell(), e1);
+ }
+
+ }
+ });
+
paramsContainer.pack();
paramsContainer.setVisible(true);
setPageComplete(true);
-
+
container.setSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
@@ -132,28 +209,39 @@ private void createParamsTexts(Map params) {
label.setText(paramName);
GridData data = new GridData();
- data.verticalAlignment = SWT.TOP;
+ data.verticalAlignment = SWT.TOP;
label.setLayoutData(data);
-
-
+
Text text = new Text(paramsContainer, SWT.BORDER | SWT.MULTI);
text.setData("paramName", paramName);
- text.setText(entry.getValue());
- text.addModifyListener(new ModifyListener(){
+ String value=entry.getValue();
+ if (value!=null&&value.startsWith(TOOLTIP)){
+ int p=value.indexOf("=", TOOLTIP.length()+1);
+ final String description =value.substring(TOOLTIP.length(),p);
+ text.setToolTipText(description);
+ text.setToolTipText(String.format("%s (%s):",paramName,description));
+ value=value.substring(p+1);
+ }
+ text.setText(value);
+
+
+ text.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
try {
- getSelectedGenerator().setUserConfiguredParams(createParamsMap());
+ getSelectedGenerator().setUserConfiguredParams(
+ createParamsMap());
} catch (Exception e1) {
- EclipseGuiUtils.showErrorDialog(container.getShell(), e1);
+ EclipseGuiUtils.showErrorDialog(container.getShell(),
+ e1);
throw new RuntimeException(e1);
}
}
-
+
});
-
+
paramsTexts.add(text);
GridData data2 = new GridData();
@@ -162,9 +250,7 @@ public void modifyText(ModifyEvent e) {
text.setLayoutData(data2);
}
}
-
-
-
+
private Map createParamsMap() {
Map paramsMap = new LinkedHashMap();
diff --git a/code2code/src/code2code/ui/wizards/generate/GeneratorSelectionPage.java b/code2code/src/code2code/ui/wizards/generate/GeneratorSelectionPage.java
index b723f2c..b262b4a 100644
--- a/code2code/src/code2code/ui/wizards/generate/GeneratorSelectionPage.java
+++ b/code2code/src/code2code/ui/wizards/generate/GeneratorSelectionPage.java
@@ -1,8 +1,11 @@
package code2code.ui.wizards.generate;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.regex.Pattern;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.wizard.WizardPage;
@@ -10,85 +13,168 @@
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+import code2code.Activator;
import code2code.core.generator.Generator;
import code2code.core.generator.GeneratorFactory;
+import code2code.preferences.PreferenceConstants;
import code2code.utils.EclipseGuiUtils;
+public class GeneratorSelectionPage extends WizardPage {
-public class GeneratorSelectionPage extends WizardPage {
-
- private List