Add UI skeleton to manage TeaVM SSA transformers

This commit is contained in:
konsoletyper 2014-09-18 17:55:13 +04:00
parent 6c17490495
commit aefce514ff
3 changed files with 73 additions and 21 deletions

View File

@ -26,6 +26,7 @@ public class PreferencesBasedTeaVMProjectSettings implements TeaVMProjectSetting
public static final String SOURCE_MAPS = "sourceMaps"; public static final String SOURCE_MAPS = "sourceMaps";
public static final String DEBUG_INFORMATION = "debugInformation"; public static final String DEBUG_INFORMATION = "debugInformation";
public static final String PROPERTIES = "properties"; public static final String PROPERTIES = "properties";
public static final String TRANSFORMERS = "transformers";
private static final String NEW_PROFILE_NAME = "New profile"; private static final String NEW_PROFILE_NAME = "New profile";
private List<ProfileImpl> profiles = new ArrayList<>(); private List<ProfileImpl> profiles = new ArrayList<>();
@ -142,6 +143,7 @@ public class PreferencesBasedTeaVMProjectSettings implements TeaVMProjectSetting
private boolean sourceMapsGenerated; private boolean sourceMapsGenerated;
private boolean debugInformationGenerated; private boolean debugInformationGenerated;
private Properties properties = new Properties(); private Properties properties = new Properties();
private String[] transformers = new String[0];
@Override @Override
public String getName() { public String getName() {
@ -272,6 +274,16 @@ public class PreferencesBasedTeaVMProjectSettings implements TeaVMProjectSetting
this.properties.putAll(properties); this.properties.putAll(properties);
} }
@Override
public String[] getTransformers() {
return transformers.clone();
}
@Override
public void setTransformers(String[] transformers) {
this.transformers = transformers.clone();
}
public void load() throws BackingStoreException { public void load() throws BackingStoreException {
preferences.sync(); preferences.sync();
enabled = preferences.getBoolean(ENABLED, true); enabled = preferences.getBoolean(ENABLED, true);
@ -290,6 +302,9 @@ public class PreferencesBasedTeaVMProjectSettings implements TeaVMProjectSetting
for (String key : propertiesPrefs.keys()) { for (String key : propertiesPrefs.keys()) {
properties.setProperty(key, propertiesPrefs.get(key, "")); properties.setProperty(key, propertiesPrefs.get(key, ""));
} }
Preferences transformersPrefs = preferences.node(TRANSFORMERS);
transformersPrefs.sync();
transformers = transformersPrefs.keys();
} }
public void save() throws BackingStoreException { public void save() throws BackingStoreException {
@ -310,6 +325,12 @@ public class PreferencesBasedTeaVMProjectSettings implements TeaVMProjectSetting
propertiesPrefs.put((String)key, properties.getProperty((String)key)); propertiesPrefs.put((String)key, properties.getProperty((String)key));
} }
propertiesPrefs.flush(); propertiesPrefs.flush();
Preferences transformersPrefs = preferences.node(TRANSFORMERS);
transformersPrefs.clear();
for (String transformer : transformers) {
transformersPrefs.put(transformer, "");
}
transformersPrefs.flush();
preferences.flush(); preferences.flush();
} }
} }

View File

@ -54,4 +54,8 @@ public interface TeaVMProfile {
Properties getProperties(); Properties getProperties();
void setProperties(Properties properties); void setProperties(Properties properties);
String[] getTransformers();
void setTransformers(String[] transformers);
} }

View File

@ -24,21 +24,12 @@ import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.*;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
import org.eclipse.ui.model.WorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.ui.model.WorkbenchLabelProvider;
@ -73,6 +64,9 @@ public class TeaVMProfileDialog extends Dialog {
private Button addPropertyButton; private Button addPropertyButton;
private Button deletePropertyButton; private Button deletePropertyButton;
private WritableList propertyList = new WritableList(); private WritableList propertyList = new WritableList();
private org.eclipse.swt.widgets.List transormersList;
private Button addTransformerButton;
private Button removeTransformerButton;
private IJavaProject javaProject; private IJavaProject javaProject;
private TeaVMProjectSettings settings; private TeaVMProjectSettings settings;
private TeaVMProfile profile; private TeaVMProfile profile;
@ -99,13 +93,26 @@ public class TeaVMProfileDialog extends Dialog {
protected Control createDialogArea(Composite parent) { protected Control createDialogArea(Composite parent) {
Composite area = (Composite)super.createDialogArea(parent); Composite area = (Composite)super.createDialogArea(parent);
area.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); area.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
//ScrolledComposite scrollContainer = new ScrolledComposite(area, SWT.V_SCROLL | SWT.H_SCROLL); ScrolledComposite scrollContainer = new ScrolledComposite(area, SWT.V_SCROLL | SWT.H_SCROLL);
//scrollContainer.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true)); scrollContainer.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
Composite container = new Composite(area, SWT.NONE); TabFolder tabFolder = new TabFolder(scrollContainer, SWT.TOP);
container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); scrollContainer.setContent(tabFolder);
/*scrollContainer.setContent(container);
scrollContainer.setExpandHorizontal(true); scrollContainer.setExpandHorizontal(true);
scrollContainer.setExpandVertical(true);*/ scrollContainer.setExpandVertical(true);
TabItem generalItem = new TabItem(tabFolder, SWT.NONE);
generalItem.setText("General");
generalItem.setControl(createGeneralTab(tabFolder));
TabItem advancedItem = new TabItem(tabFolder, SWT.NONE);
advancedItem.setText("Advanced");
advancedItem.setControl(createAdvancedTab(tabFolder));
load();
tabFolder.setSize(tabFolder.computeSize(SWT.DEFAULT, SWT.DEFAULT));
scrollContainer.setMinSize(tabFolder.getSize());
return scrollContainer;
}
private Composite createGeneralTab(TabFolder folder) {
Composite container = new Composite(folder, SWT.NONE);
GridLayout layout = new GridLayout(1, false); GridLayout layout = new GridLayout(1, false);
layout.marginHeight = 8; layout.marginHeight = 8;
layout.verticalSpacing = 10; layout.verticalSpacing = 10;
@ -115,10 +122,16 @@ public class TeaVMProfileDialog extends Dialog {
createIncrementalGroup(container); createIncrementalGroup(container);
createDebugGroup(container); createDebugGroup(container);
createPropertiesGroup(container); createPropertiesGroup(container);
load(); return container;
//container.setSize(container.computeSize(SWT.DEFAULT, SWT.DEFAULT)); }
//scrollContainer.setMinSize(container.getSize());
//return scrollContainer; private Composite createAdvancedTab(TabFolder folder) {
Composite container = new Composite(folder, SWT.NONE);
GridLayout layout = new GridLayout(1, false);
layout.marginHeight = 8;
layout.verticalSpacing = 10;
container.setLayout(layout);
createTransformersGroup(container);
return container; return container;
} }
@ -263,6 +276,20 @@ public class TeaVMProfileDialog extends Dialog {
String value = ""; String value = "";
} }
private void createTransformersGroup(Composite parent) {
Group group = createGroup(parent, "TeaVM bytecode transformers", 2, true);
transormersList = new org.eclipse.swt.widgets.List(group, SWT.SINGLE | SWT.BORDER);
transormersList.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 3));
addTransformerButton = new Button(group, SWT.PUSH);
addTransformerButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
addTransformerButton.setText("Add...");
removeTransformerButton = new Button(group, SWT.PUSH);
removeTransformerButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
removeTransformerButton.setText("Remove");
}
private Group createGroup(Composite parent, String title, int columns, boolean fillVert) { private Group createGroup(Composite parent, String title, int columns, boolean fillVert) {
Group group = new Group(parent, SWT.NONE); Group group = new Group(parent, SWT.NONE);
group.setLayoutData(new GridData(SWT.FILL, fillVert ? SWT.FILL : SWT.TOP, true, fillVert)); group.setLayoutData(new GridData(SWT.FILL, fillVert ? SWT.FILL : SWT.TOP, true, fillVert));