summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java')
-rw-r--r--bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java1200
1 files changed, 0 insertions, 1200 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java
deleted file mode 100644
index 9a68eab98d..0000000000
--- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java
+++ /dev/null
@@ -1,1200 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.tools.internal;
-
-import java.io.*;
-import java.lang.reflect.*;
-
-import org.eclipse.swt.*;
-import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.custom.*;
-import org.eclipse.swt.graphics.*;
-import org.eclipse.swt.layout.*;
-
-public class JNIGeneratorAppUI {
-
- Display display;
- Shell shell;
-
- Composite actionsPanel;
- Combo mainClassCb, outputDirCb;
- Table classesLt, membersLt, paramsLt;
- ProgressBar progressBar;
- Label progressLabel;
- FileDialog fileDialog;
-
- TableEditor paramTextEditor, memberTextEditor, classTextEditor;
- FlagsEditor paramListEditor, memberListEditor, classListEditor;
- Text paramEditorTx, memberEditorTx, classEditorTx;
- List paramEditorLt, memberEditorLt, classEditorLt;
-
- static class FlagsEditor {
- Table parent;
- int column = -1;
- TableItem item;
-
- public FlagsEditor(Table parent) {
- this.parent = parent;
- }
-
- public int getColumn() {
- return column;
- }
-
- public TableItem getItem() {
- return item;
- }
-
- public void setColumn(int column) {
- this.column = column;
- }
-
- public void setItem(TableItem item) {
- this.item = item;
- }
- }
-
- JNIGeneratorApp app;
-
- static final int CLASS_NAME_COLUMN = 0;
- static final int CLASS_FLAGS_COLUMN = 1;
- static final int CLASS_EXCLUDE_COLUMN = 2;
-
- static final int FIELD_NAME_COLUMN = 0;
- static final int FIELD_FLAGS_COLUMN = 1;
- static final int FIELD_CAST_COLUMN = 2;
- static final int FIELD_ACCESSOR_COLUMN = 3;
- static final int FIELD_EXCLUDE_COLUMN = 4;
-
- static final int METHOD_NAME_COLUMN = 0;
- static final int METHOD_FLAGS_COLUMN = 1;
- static final int METHOD_ACCESSOR_COLUMN = 2;
- static final int METHOD_EXCLUDE_COLUMN = 3;
-
- static final int PARAM_INDEX_COLUMN = 0;
- static final int PARAM_TYPE_COLUMN = 1;
- static final int PARAM_FLAGS_COLUMN = 2;
- static final int PARAM_CAST_COLUMN = 3;
-
-public JNIGeneratorAppUI() {
- this (new JNIGeneratorApp());
-}
-
-public JNIGeneratorAppUI(JNIGeneratorApp app) {
- this.app = app;
-}
-
-void cleanup() {
- display.dispose();
-}
-
-void generateStructsHeader () {
- StructsGenerator gen = new StructsGenerator(true);
- gen.setMainClass(app.getMainClass());
- gen.setMetaData(app.getMetaData());
- gen.setClasses(getSelectedClasses());
- gen.generate();
-}
-
-void generateStructs () {
- StructsGenerator gen = new StructsGenerator(false);
- gen.setMainClass(app.getMainClass());
- gen.setMetaData(app.getMetaData());
- gen.setClasses(getSelectedClasses());
- gen.generate();
-}
-
-void generateSizeof () {
- SizeofGenerator gen = new SizeofGenerator();
- gen.setMainClass(app.getMainClass());
- gen.setMetaData(app.getMetaData());
- gen.setClasses(getSelectedClasses());
- gen.generate();
-}
-
-void generateMetaData () {
- MetaDataGenerator gen = new MetaDataGenerator();
- gen.setMainClass(app.getMainClass());
- gen.setMetaData(app.getMetaData());
- Method[] methods = getSelectedMethods();
- if (methods.length != 0) {
- gen.generate(methods);
- } else {
- gen.setClasses(getSelectedClasses());
- gen.generate();
- }
-}
-
-void generateNatives () {
- NativesGenerator gen = new NativesGenerator();
- gen.setMainClass(app.getMainClass());
- gen.setMetaData(app.getMetaData());
- Method[] methods = getSelectedMethods();
- if (methods.length != 0) {
- gen.generate(methods);
- } else {
- gen.setClasses(getSelectedClasses());
- gen.generate();
- }
-}
-
-void generateAll() {
- if (!updateOutputDir()) return;
- Cursor cursor = display.getSystemCursor(SWT.CURSOR_WAIT);
- shell.setCursor(cursor);
- shell.setEnabled(false);
- Control[] children = actionsPanel.getChildren();
- for (int i = 0; i < children.length; i++) {
- Control child = children[i];
- if (child instanceof Button) child.setEnabled(false);
- }
- final boolean showProgress = true;
- if (showProgress) {
- progressLabel.setText("");
- progressBar.setSelection(0);
- progressLabel.setVisible(true);
- progressBar.setVisible(true);
- }
- final boolean[] done = new boolean[1];
- new Thread() {
- public void run() {
- try {
- app.generate(!showProgress ? null : new ProgressMonitor() {
- public void setTotal(final int total) {
- display.syncExec(new Runnable() {
- public void run() {
- progressBar.setMaximum(total);
- }
- });
- }
- public void step() {
- display.syncExec(new Runnable() {
- public void run() {
- progressBar.setSelection(progressBar.getSelection() + 1);
- }
- });
- }
- public void setMessage(final String message) {
- display.syncExec(new Runnable() {
- public void run() {
- progressLabel.setText(message);
- progressLabel.update();
- }
- });
- }
- });
- } finally {
- done[0] = true;
- display.wake();
- }
- }
- }.start();
- while (!done[0]) {
- if (!display.readAndDispatch()) display.sleep();
- }
- for (int i = 0; i < children.length; i++) {
- Control child = children[i];
- if (child instanceof Button) child.setEnabled(true);
- }
- if (showProgress) {
- progressBar.setVisible(false);
- progressLabel.setVisible(false);
- }
- shell.setEnabled(true);
- shell.setCursor(null);
-}
-
-void generateConstants () {
- ConstantsGenerator gen = new ConstantsGenerator();
- gen.setMainClass(app.getMainClass());
- gen.setMetaData(app.getMetaData());
- Field[] fields = getSelectedFields();
- if (fields.length != 0) {
- gen.generate(fields);
- } else {
- gen.setClasses(getSelectedClasses());
- gen.generate();
- }
-}
-
-Class[] getSelectedClasses() {
- TableItem[] items = classesLt.getSelection();
- Class[] classes = new Class[items.length];
- for (int i = 0; i < items.length; i++) {
- TableItem item = items[i];
- classes[i] = ((ClassData)item.getData()).getClazz();
- }
- return classes;
-}
-
-Method[] getSelectedMethods() {
- TableItem[] selection = membersLt.getSelection();
- Method[] methods = new Method[selection.length];
- int count = 0;
- for (int i = 0; i < selection.length; i++) {
- TableItem item = selection [i];
- Object data = item.getData();
- if (data instanceof MethodData) {
- Method method = ((MethodData)data).getMethod();
- methods[count++] = method;
- }
- }
- if (count != methods.length) {
- Method[] result = new Method[count];
- System.arraycopy(methods, 0, result, 0, count);
- methods = result;
- }
- return methods;
-}
-
-Field[] getSelectedFields() {
- TableItem[] selection = membersLt.getSelection();
- Field[] fields = new Field[selection.length];
- int count = 0;
- for (int i = 0; i < selection.length; i++) {
- TableItem item = selection [i];
- Object data = item.getData();
- if (data instanceof FieldData) {
- Field field = ((FieldData)data).getField();
- fields[count++] = field;
- }
- }
- if (count != fields.length) {
- Field[] result = new Field[count];
- System.arraycopy(fields, 0, result, 0, count);
- fields = result;
- }
- return fields;
-}
-
-public void open () {
- display = new Display();
- shell = new Shell(display);
- shell.setText("JNI Generator");
-
- GridData data;
- GridLayout shellLayout = new GridLayout();
- shellLayout.numColumns = 2;
- shell.setLayout(shellLayout);
-
- Composite panel = new Composite(shell, SWT.NONE);
- data = new GridData(GridData.FILL_BOTH);
- panel.setLayoutData(data);
-
- GridLayout panelLayout = new GridLayout();
- panelLayout.numColumns = 1;
- panel.setLayout(panelLayout);
-
- Listener updateMainClassListener = new Listener() {
- public void handleEvent(Event e) {
- updateMainClass();
- if (!updateOutputDir()) return;
- updateClasses();
- updateMembers();
- updateParameters();
- }
- };
- createMainClassPanel(panel, updateMainClassListener);
- createClassesPanel(panel);
- createMembersPanel(panel);
- createParametersPanel(panel);
- createActionButtons(shell);
-
- Point preferredSize = shell.computeSize(SWT.DEFAULT, SWT.DEFAULT);
- shell.setSize(shell.getSize().x, preferredSize.y);
-
- updateMainClass();
- updateClasses();
- updateMembers();
- updateParameters();
-}
-
-void createMainClassPanel(Composite panel, Listener updateListener) {
- Label mainClassLb = new Label(panel, SWT.NONE);
- mainClassLb.setText("&Main Class:");
-
- GridData data;
- mainClassCb = new Combo(panel, SWT.DROP_DOWN);
- String mainClass = app.getMainClassName();
- mainClassCb.setText(mainClass == null ? "" : mainClass);
- data = new GridData(GridData.FILL_HORIZONTAL);
- mainClassCb.setLayoutData(data);
- mainClassCb.addListener(SWT.Selection, updateListener);
- mainClassCb.addListener(SWT.DefaultSelection, updateListener);
-
- Label outputDirLb = new Label(panel, SWT.NONE);
- outputDirLb.setText("&Output Dir:");
-
- outputDirCb = new Combo(panel, SWT.DROP_DOWN);
- String outputDir = app.getOutputDir();
- outputDirCb.setText(outputDir == null ? "" : outputDir);
- data = new GridData(GridData.FILL_HORIZONTAL);
- outputDirCb.setLayoutData(data);
- outputDirCb.addListener(SWT.Selection, updateListener);
- outputDirCb.addListener(SWT.DefaultSelection, updateListener);
-
- String mainClasses = app.getMetaData().getMetaData("swt_main_classes", null);
- if (mainClasses != null) {
- String[] list = ItemData.split(mainClasses, ",");
- for (int i = 0; i < list.length; i += 2) {
- mainClassCb.add(list[i].trim());
- outputDirCb.add(list[i + 1].trim());
- }
- }
-}
-
-void createClassesPanel(Composite panel) {
- Label classesLb = new Label(panel, SWT.NONE);
- classesLb.setText("&Classes:");
-
- GridData data;
- classesLt = new Table(panel, SWT.CHECK | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
- data = new GridData(GridData.FILL_BOTH);
- data.heightHint = classesLt.getItemHeight() * 6;
- classesLt.setLayoutData(data);
- classesLt.setHeaderVisible(true);
- classesLt.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- if (e.detail == SWT.CHECK) {
- updateGenerate((TableItem)e.item);
- } else {
- updateMembers();
- updateParameters();
- }
- }
- });
- TableColumn column;
- column = new TableColumn(classesLt, SWT.NONE, CLASS_NAME_COLUMN);
- column.setText("Class");
- column = new TableColumn(classesLt, SWT.NONE, CLASS_FLAGS_COLUMN);
- column.setText("Flags");
- /*
- column = new TableColumn(classesLt, SWT.NONE, CLASS_EXCLUDE_COLUMN);
- column.setText("Exclude");
- */
-
- classTextEditor = new TableEditor(classesLt);
- classTextEditor.grabHorizontal = true;
- classEditorTx = new Text(classesLt, SWT.SINGLE);
- classTextEditor.setEditor(classEditorTx);
- Listener classTextListener = new Listener() {
- public void handleEvent(Event e) {
- if (e.type == SWT.Traverse) {
- switch (e.detail) {
- case SWT.TRAVERSE_ESCAPE:
- classTextEditor.setItem(null);
- break;
- default:
- return;
- }
- }
- classEditorTx.setVisible(false);
- TableItem item = classTextEditor.getItem();
- if (item == null) return;
- int column = classTextEditor.getColumn();
- ClassData classData = (ClassData)item.getData();
- if (column == CLASS_EXCLUDE_COLUMN) {
- String text = classEditorTx.getText();
- classData.setExclude(text);
- item.setText(column, classData.getExclude());
- MetaData metaData = app.getMetaData();
- metaData.setMetaData(classData.getClazz(), classData);
- classesLt.getColumn(column).pack();
- }
- }
- };
- classEditorTx.addListener(SWT.DefaultSelection, classTextListener);
- classEditorTx.addListener(SWT.FocusOut, classTextListener);
- classEditorTx.addListener(SWT.Traverse, classTextListener);
-
- final Shell floater = new Shell(shell, SWT.NO_TRIM);
- floater.setLayout(new FillLayout());
- classListEditor = new FlagsEditor(classesLt);
- classEditorLt = new List(floater, SWT.MULTI | SWT.BORDER);
- classEditorLt.setItems(ClassData.getAllFlags());
- floater.pack();
- floater.addListener(SWT.Close, new Listener() {
- public void handleEvent(Event e) {
- classListEditor.setItem(null);
- e.doit = false;
- floater.setVisible(false);
- }
- });
- Listener classesListListener = new Listener() {
- public void handleEvent(Event e) {
- if (e.type == SWT.Traverse) {
- switch (e.detail) {
- case SWT.TRAVERSE_RETURN:
- break;
- default:
- return;
- }
- }
- floater.setVisible(false);
- TableItem item = classListEditor.getItem();
- if (item == null) return;
- int column = classListEditor.getColumn();
- ClassData classData = (ClassData)item.getData();
- if (column == CLASS_FLAGS_COLUMN) {
- String[] flags = classEditorLt.getSelection();
- classData.setFlags(flags);
- item.setText(column, getFlagsString(classData.getFlags()));
- item.setChecked(classData.getGenerate());
- MetaData metaData = app.getMetaData();
- metaData.setMetaData(classData.getClazz(), classData);
- classesLt.getColumn(column).pack();
- }
- }
- };
- classEditorLt.addListener(SWT.DefaultSelection, classesListListener);
- classEditorLt.addListener(SWT.FocusOut, classesListListener);
- classEditorLt.addListener(SWT.Traverse, classesListListener);
-
- classesLt.addListener(SWT.MouseDown, new Listener() {
- public void handleEvent(final Event e) {
- e.display.asyncExec (new Runnable () {
- public void run () {
- if (classesLt.isDisposed ()) return;
- if (e.button != 1) return;
- Point pt = new Point(e.x, e.y);
- TableItem item = classesLt.getItem(pt);
- if (item == null) return;
- int column = -1;
- for (int i = 0; i < classesLt.getColumnCount(); i++) {
- if (item.getBounds(i).contains(pt)) {
- column = i;
- break;
- }
- }
- if (column == -1) return;
- ClassData data = (ClassData)item.getData();
- if (column == CLASS_EXCLUDE_COLUMN) {
- classTextEditor.setColumn(column);
- classTextEditor.setItem(item);
- classEditorTx.setText(data.getExclude());
- classEditorTx.selectAll();
- classEditorTx.setVisible(true);
- classEditorTx.setFocus();
- } else if (column == CLASS_FLAGS_COLUMN) {
- classListEditor.setColumn(column);
- classListEditor.setItem(item);
- classEditorLt.setSelection(data.getFlags());
- floater.setLocation(classesLt.toDisplay(e.x, e.y));
- floater.setVisible(true);
- classEditorLt.setFocus();
- }
- }
- });
- }
- });
-}
-
-void createMembersPanel(Composite panel) {
- Label membersLb = new Label(panel, SWT.NONE);
- membersLb.setText("Mem&bers:");
-
- GridData data;
- membersLt = new Table(panel, SWT.CHECK | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
- data = new GridData(GridData.FILL_BOTH);
- data.heightHint = membersLt.getItemHeight() * 6;
- membersLt.setLayoutData(data);
- membersLt.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- if (e.detail == SWT.CHECK) {
- updateGenerate((TableItem)e.item);
- } else {
- updateParameters();
- }
- }
- });
-
- memberTextEditor = new TableEditor(membersLt);
- memberTextEditor.grabHorizontal = true;
- memberEditorTx = new Text(membersLt, SWT.SINGLE);
- memberTextEditor.setEditor(memberEditorTx);
- Listener memberTextListener = new Listener() {
- public void handleEvent(Event e) {
- if (e.type == SWT.Traverse) {
- switch (e.detail) {
- case SWT.TRAVERSE_ESCAPE:
- memberTextEditor.setItem(null);
- break;
- default:
- return;
- }
- }
- memberEditorTx.setVisible(false);
- TableItem item = memberTextEditor.getItem();
- if (item == null) return;
- int column = memberTextEditor.getColumn();
- ItemData memberData = (ItemData)item.getData();
- String text = memberEditorTx.getText();
- MetaData metaData = app.getMetaData();
- if (memberData instanceof FieldData) {
- FieldData fieldData = (FieldData)memberData;
- switch (column) {
- case FIELD_CAST_COLUMN: {
- fieldData.setCast(text);
- item.setText(column, fieldData.getCast());
- break;
- }
- case FIELD_ACCESSOR_COLUMN: {
- fieldData.setAccessor(text);
- item.setText(column, fieldData.getAccessor());
- break;
- }
- case FIELD_EXCLUDE_COLUMN: {
- fieldData.setExclude(text);
- item.setText(column, fieldData.getExclude());
- break;
- }
- }
- metaData.setMetaData(fieldData.getField(), fieldData);
- membersLt.getColumn(column).pack();
- } else if (memberData instanceof MethodData) {
- MethodData methodData = (MethodData)memberData;
- switch (column) {
- case METHOD_ACCESSOR_COLUMN: {
- methodData.setAccessor(text);
- item.setText(column, methodData.getAccessor());
- break;
- }
- case METHOD_EXCLUDE_COLUMN: {
- methodData.setExclude(text);
- item.setText(column, methodData.getExclude());
- break;
- }
- }
- metaData.setMetaData(methodData.getMethod(), methodData);
- membersLt.getColumn(column).pack();
- }
- }
- };
- memberEditorTx.addListener(SWT.DefaultSelection, memberTextListener);
- memberEditorTx.addListener(SWT.FocusOut, memberTextListener);
- memberEditorTx.addListener(SWT.Traverse, memberTextListener);
-
- final Shell floater = new Shell(shell, SWT.NO_TRIM);
- floater.setLayout(new FillLayout());
- memberListEditor = new FlagsEditor(membersLt);
- memberEditorLt = new List(floater, SWT.MULTI | SWT.BORDER);
- floater.addListener(SWT.Close, new Listener() {
- public void handleEvent(Event e) {
- memberListEditor.setItem(null);
- e.doit = false;
- floater.setVisible(false);
- }
- });
- Listener memberListListener = new Listener() {
- public void handleEvent(Event e) {
- if (e.type == SWT.Traverse) {
- switch (e.detail) {
- case SWT.TRAVERSE_RETURN:
- break;
- default:
- return;
- }
- }
- floater.setVisible(false);
- TableItem item = memberListEditor.getItem();
- if (item == null) return;
- int column = memberListEditor.getColumn();
- ItemData data = (ItemData)item.getData();
- String[] flags = memberEditorLt.getSelection();
- data.setFlags(flags);
- item.setText(column, getFlagsString(data.getFlags()));
- item.setChecked(data.getGenerate());
- MetaData metaData = app.getMetaData();
- if (data instanceof FieldData) {
- FieldData fieldData = (FieldData)data;
- metaData.setMetaData(fieldData.getField(), fieldData);
- membersLt.getColumn(column).pack();
- } else if (data instanceof MethodData) {
- MethodData methodData = (MethodData)data;
- metaData.setMetaData(methodData.getMethod(), methodData);
- membersLt.getColumn(column).pack();
- }
- }
- };
- memberEditorLt.addListener(SWT.DefaultSelection, memberListListener);
- memberEditorLt.addListener(SWT.FocusOut, memberListListener);
- memberEditorLt.addListener(SWT.Traverse, memberListListener);
-
- membersLt.addListener(SWT.MouseDown, new Listener() {
- public void handleEvent(final Event e) {
- e.display.asyncExec (new Runnable () {
- public void run () {
- if (membersLt.isDisposed ()) return;
- if (e.button != 1) return;
- Point pt = new Point(e.x, e.y);
- TableItem item = membersLt.getItem(pt);
- if (item == null) return;
- int column = -1;
- for (int i = 0; i < membersLt.getColumnCount(); i++) {
- if (item.getBounds(i).contains(pt)) {
- column = i;
- break;
- }
- }
- if (column == -1) return;
- ItemData itemData = (ItemData)item.getData();
- if (itemData instanceof FieldData) {
- FieldData data = (FieldData)itemData;
- if (column == FIELD_CAST_COLUMN || column == FIELD_ACCESSOR_COLUMN || column == FIELD_EXCLUDE_COLUMN) {
- memberTextEditor.setColumn(column);
- memberTextEditor.setItem(item);
- String text = "";
- switch (column) {
- case FIELD_CAST_COLUMN: text = data.getCast(); break;
- case FIELD_ACCESSOR_COLUMN: text = data.getAccessor(); break;
- case FIELD_EXCLUDE_COLUMN: text = data.getExclude(); break;
- }
- memberEditorTx.setText(text);
- memberEditorTx.selectAll();
- memberEditorTx.setVisible(true);
- memberEditorTx.setFocus();
- } else if (column == FIELD_FLAGS_COLUMN) {
- memberListEditor.setColumn(column);
- memberListEditor.setItem(item);
- memberEditorLt.setItems(FieldData.getAllFlags());
- memberEditorLt.setSelection(data.getFlags());
- floater.setLocation(membersLt.toDisplay(e.x, e.y));
- floater.pack();
- floater.setVisible(true);
- memberEditorLt.setFocus();
- }
- } else if (itemData instanceof MethodData) {
- MethodData data = (MethodData)itemData;
- if (column == METHOD_EXCLUDE_COLUMN || column == METHOD_ACCESSOR_COLUMN) {
- memberTextEditor.setColumn(column);
- memberTextEditor.setItem(item);
- String text = "";
- switch (column) {
- case METHOD_ACCESSOR_COLUMN: text = data.getAccessor(); break;
- case METHOD_EXCLUDE_COLUMN: text = data.getExclude(); break;
- }
- memberEditorTx.setText(text);
- memberEditorTx.selectAll();
- memberEditorTx.setVisible(true);
- memberEditorTx.setFocus();
- } else if (column == METHOD_FLAGS_COLUMN) {
- memberListEditor.setColumn(column);
- memberListEditor.setItem(item);
- memberEditorLt.setItems(MethodData.getAllFlags());
- memberEditorLt.setSelection(data.getFlags());
- floater.setLocation(membersLt.toDisplay(e.x, e.y));
- floater.pack();
- floater.setVisible(true);
- memberEditorLt.setFocus();
- }
- }
- }
- });
- }
- });
-}
-
-void createParametersPanel(Composite panel) {
- Label paramsLb = new Label(panel, SWT.NONE);
- paramsLb.setText("&Parameters:");
-
- GridData data;
- paramsLt = new Table(panel, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
- data = new GridData(GridData.FILL_BOTH);
- int itemHeight = paramsLt.getItemHeight();
- data.heightHint = itemHeight * 6;
- paramsLt.setLayoutData(data);
- paramsLt.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event e) {
- if (e.detail == SWT.CHECK) {
- updateGenerate((TableItem)e.item);
- }
- }
- });
-
- TableColumn column;
- column = new TableColumn(paramsLt, SWT.NONE, PARAM_INDEX_COLUMN);
- column = new TableColumn(paramsLt, SWT.NONE, PARAM_TYPE_COLUMN);
- column.setText("Type");
- column = new TableColumn(paramsLt, SWT.NONE, PARAM_FLAGS_COLUMN);
- column.setText("Flags");
- column = new TableColumn(paramsLt, SWT.NONE, PARAM_CAST_COLUMN);
- column.setText("Cast");
-
- paramTextEditor = new TableEditor(paramsLt);
- paramTextEditor.grabHorizontal = true;
- paramEditorTx = new Text(paramsLt, SWT.SINGLE);
- paramTextEditor.setEditor(paramEditorTx);
- Listener paramTextListener = new Listener() {
- public void handleEvent(Event e) {
- if (e.type == SWT.Traverse) {
- switch (e.detail) {
- case SWT.TRAVERSE_ESCAPE:
- paramTextEditor.setItem(null);
- break;
- default:
- return;
- }
- }
- paramEditorTx.setVisible(false);
- TableItem item = paramTextEditor.getItem();
- if (item == null) return;
- int column = paramTextEditor.getColumn();
- ParameterData paramData = (ParameterData)item.getData();
- if (column == PARAM_CAST_COLUMN) {
- String text = paramEditorTx.getText();
- paramData.setCast(text);
- item.setText(column, paramData.getCast());
- MetaData metaData = app.getMetaData();
- metaData.setMetaData(paramData.getMethod(), paramData.getParameter(), paramData);
- paramsLt.getColumn(column).pack();
- }
- }
- };
- paramEditorTx.addListener(SWT.DefaultSelection, paramTextListener);
- paramEditorTx.addListener(SWT.FocusOut, paramTextListener);
- paramEditorTx.addListener(SWT.Traverse, paramTextListener);
-
- final Shell floater = new Shell(shell, SWT.NO_TRIM);
- floater.setLayout(new FillLayout());
- paramListEditor = new FlagsEditor(paramsLt);
- paramEditorLt = new List(floater, SWT.MULTI | SWT.BORDER);
- paramEditorLt.setItems(ParameterData.getAllFlags());
- floater.pack();
- floater.addListener(SWT.Close, new Listener() {
- public void handleEvent(Event e) {
- paramListEditor.setItem(null);
- e.doit = false;
- floater.setVisible(false);
- }
- });
- Listener paramListListener = new Listener() {
- public void handleEvent(Event e) {
- if (e.type == SWT.Traverse) {
- switch (e.detail) {
- case SWT.TRAVERSE_RETURN:
- break;
- default:
- return;
- }
- }
- floater.setVisible(false);
- TableItem item = paramListEditor.getItem();
- if (item == null) return;
- int column = paramListEditor.getColumn();
- ParameterData paramData = (ParameterData)item.getData();
- if (column == PARAM_FLAGS_COLUMN) {
- String[] flags = paramEditorLt.getSelection();
- paramData.setFlags(flags);
- item.setText(column, getFlagsString(paramData.getFlags()));
- MetaData metaData = app.getMetaData();
- metaData.setMetaData(paramData.getMethod(), paramData.getParameter(), paramData);
- paramsLt.getColumn(column).pack();
- }
- }
- };
- paramEditorLt.addListener(SWT.DefaultSelection, paramListListener);
- paramEditorLt.addListener(SWT.FocusOut, paramListListener);
- paramEditorLt.addListener(SWT.Traverse, paramListListener);
-
- paramsLt.addListener(SWT.MouseDown, new Listener() {
- public void handleEvent(final Event e) {
- e.display.asyncExec (new Runnable () {
- public void run () {
- if (paramsLt.isDisposed ()) return;
- if (e.button != 1) return;
- Point pt = new Point(e.x, e.y);
- TableItem item = paramsLt.getItem(pt);
- if (item == null) return;
- int column = -1;
- for (int i = 0; i < paramsLt.getColumnCount(); i++) {
- if (item.getBounds(i).contains(pt)) {
- column = i;
- break;
- }
- }
- if (column == -1) return;
- ParameterData data = (ParameterData)item.getData();
- if (column == PARAM_CAST_COLUMN) {
- paramTextEditor.setColumn(column);
- paramTextEditor.setItem(item);
- paramEditorTx.setText(data.getCast());
- paramEditorTx.selectAll();
- paramEditorTx.setVisible(true);
- paramEditorTx.setFocus();
- } else if (column == PARAM_FLAGS_COLUMN) {
- paramListEditor.setColumn(column);
- paramListEditor.setItem(item);
- paramEditorLt.setSelection(data.getFlags());
- floater.setLocation(paramsLt.toDisplay(e.x, e.y));
- floater.setVisible(true);
- paramEditorLt.setFocus();
- }
- }
- });
- }
- });
-}
-
-Button createActionButton(Composite parent, String text, Listener listener) {
- Button action = new Button(parent, SWT.PUSH);
- action.setText(text);
- GridData data = new GridData(GridData.FILL_HORIZONTAL);
- action.setLayoutData(data);
- action.addListener(SWT.Selection, listener);
- return action;
-}
-
-void createActionButtons(Composite parent) {
- actionsPanel = new Composite(parent, SWT.NONE);
-
- GridData data = new GridData(GridData.FILL_VERTICAL);
- actionsPanel.setLayoutData(data);
-
- GridLayout actionsLayout = new GridLayout();
- actionsLayout.numColumns = 1;
- actionsPanel.setLayout(actionsLayout);
-
- createActionButton(actionsPanel, "Generate &All", new Listener() {
- public void handleEvent(Event e) {
- generateAll();
- }
- });
-
- Label separator = new Label(actionsPanel, SWT.SEPARATOR | SWT.HORIZONTAL);
- data = new GridData(GridData.FILL_HORIZONTAL);
- separator.setLayoutData(data);
- separator = new Label(actionsPanel, SWT.SEPARATOR | SWT.HORIZONTAL);
- data = new GridData(GridData.FILL_HORIZONTAL);
- separator.setLayoutData(data);
-
- createActionButton(actionsPanel, "Generate Structs &Header", new Listener() {
- public void handleEvent(Event e) {
- generateStructsHeader();
- }
- });
- createActionButton(actionsPanel, "Generate &Structs", new Listener() {
- public void handleEvent(Event e) {
- generateStructs();
- }
- });
- createActionButton(actionsPanel, "Generate &Natives", new Listener() {
- public void handleEvent(Event e) {
- generateNatives();
- }
- });
- createActionButton(actionsPanel, "Generate Meta &Data", new Listener() {
- public void handleEvent(Event e) {
- generateMetaData();
- }
- });
- createActionButton(actionsPanel, "Generate Cons&tants", new Listener() {
- public void handleEvent(Event e) {
- generateConstants();
- }
- });
- createActionButton(actionsPanel, "Generate Si&zeof", new Listener() {
- public void handleEvent(Event e) {
- generateSizeof();
- }
- });
-
- Composite filler = new Composite(actionsPanel, SWT.NONE);
- filler.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- progressLabel = new Label(actionsPanel, SWT.NONE);
- data = new GridData(GridData.FILL_HORIZONTAL);
- progressLabel.setLayoutData(data);
- progressLabel.setVisible(false);
-
- progressBar = new ProgressBar(actionsPanel, SWT.NONE);
- data = new GridData(GridData.FILL_HORIZONTAL);
- progressBar.setLayoutData(data);
- progressBar.setVisible(false);
-}
-
-public void run() {
- shell.open();
- while (!shell.isDisposed()) {
- if (!display.readAndDispatch()) display.sleep ();
- }
- cleanup();
-}
-
-String getPackageString(String className) {
- int dot = app.getMainClassName().lastIndexOf('.');
- if (dot == -1) return "";
- return app.getMainClassName().substring(0, dot);
-}
-
-String getClassString(Class clazz) {
- String name = JNIGenerator.getTypeSignature3(clazz);
- int index = name.lastIndexOf('.');
- if (index == -1) return name;
- return name.substring(index + 1, name.length());
-}
-
-String getFlagsString(String[] flags) {
- if (flags.length == 0) return "";
- StringBuffer buffer = new StringBuffer();
- for (int j = 0; j < flags.length; j++) {
- String flag = flags[j];
- if (buffer.length() != 0) buffer.append(", ");
- buffer.append(flag);
- }
- return buffer.toString();
-}
-
-String getMethodString(Method method) {
- String pkgName = getPackageString(method.getDeclaringClass().getName());
- StringBuffer buffer = new StringBuffer();
- buffer.append(method.getName());
- buffer.append("(");
- Class[] params = method.getParameterTypes();
- for (int i = 0; i < params.length; i++) {
- Class param = params[i];
- if (i != 0) buffer.append(",");
- String string = JNIGenerator.getTypeSignature3(param);
- if (string.startsWith(pkgName)) string = string.substring(pkgName.length() + 1);
- buffer.append(string);
- }
- buffer.append(")");
- return buffer.toString();
-}
-
-String getFieldString(Field field) {
- return field.getName();
-}
-
-void updateClasses() {
- classesLt.removeAll();
- MetaData metaData = app.getMetaData();
- Class[] classes = app.getClasses();
- for (int i = 0; i < classes.length; i++) {
- Class clazz = classes[i];
- ClassData classData = metaData.getMetaData(clazz);
- TableItem item = new TableItem(classesLt, SWT.NONE);
- item.setData(classData);
- item.setText(CLASS_NAME_COLUMN, getClassString(clazz));
- item.setText(CLASS_FLAGS_COLUMN, getFlagsString(classData.getFlags()));
- item.setChecked(classData.getGenerate());
- }
- TableColumn[] columns = classesLt.getColumns();
- for (int i = 0; i < columns.length; i++) {
- TableColumn column = columns[i];
- column.pack();
- }
-}
-
-void updateMembers() {
- membersLt.removeAll();
- MetaData metaData = app.getMetaData();
- membersLt.setHeaderVisible(false);
- TableColumn[] columns = membersLt.getColumns();
- for (int i = 0; i < columns.length; i++) {
- TableColumn column = columns[i];
- column.dispose();
- }
- int[] indices = classesLt.getSelectionIndices();
- if (indices.length != 1) return;
- TableItem classItem = classesLt.getItem(indices[0]);
- ClassData classData = (ClassData)classItem.getData();
- Class clazz = classData.getClazz();
- boolean hasNatives = false;
- Method[] methods = clazz.getDeclaredMethods();
- for (int i = 0; i < methods.length; i++) {
- Method method = methods[i];
- int mods = method.getModifiers();
- if (hasNatives =((mods & Modifier.NATIVE) != 0)) break;
- }
- membersLt.setRedraw(false);
- if (hasNatives) {
- TableColumn column;
- column = new TableColumn(membersLt, SWT.NONE, METHOD_NAME_COLUMN);
- column.setText("Method");
- column = new TableColumn(membersLt, SWT.NONE, METHOD_FLAGS_COLUMN);
- column.setText("Flags");
- column = new TableColumn(membersLt, SWT.NONE, METHOD_ACCESSOR_COLUMN);
- column.setText("Accessor");
- /*
- column = new TableColumn(membersLt, SWT.NONE, METHOD_EXCLUDE_COLUMN);
- column.setText("Exclude");
- */
- JNIGenerator.sort(methods);
- for (int i = 0; i < methods.length; i++) {
- Method method = methods[i];
- if ((method.getModifiers() & Modifier.NATIVE) == 0) continue;
- MethodData methodData = metaData.getMetaData(method);
- TableItem item = new TableItem(membersLt, SWT.NONE);
- item.setData(methodData);
- item.setText(METHOD_NAME_COLUMN, getMethodString(method));
- item.setChecked(methodData.getGenerate());
- item.setText(METHOD_FLAGS_COLUMN, getFlagsString(methodData.getFlags()));
- item.setText(METHOD_ACCESSOR_COLUMN, methodData.getAccessor());
- /*
- item.setText(METHOD_EXCLUDE_COLUMN, methodData.getExclude());
- */
- }
- } else {
- TableColumn column;
- column = new TableColumn(membersLt, SWT.NONE, FIELD_NAME_COLUMN);
- column.setText("Field");
- column = new TableColumn(membersLt, SWT.NONE, FIELD_FLAGS_COLUMN);
- column.setText("Flags");
- column = new TableColumn(membersLt, SWT.NONE, FIELD_CAST_COLUMN);
- column.setText("Cast");
- column = new TableColumn(membersLt, SWT.NONE, FIELD_ACCESSOR_COLUMN);
- column.setText("Accessor");
- /*
- column = new TableColumn(membersLt, SWT.NONE, FIELD_EXCLUDE_COLUMN);
- column.setText("Exclude");
- */
- Field[] fields = clazz.getDeclaredFields();
- for (int i = 0; i < fields.length; i++) {
- Field field = fields[i];
- int mods = field.getModifiers();
- if (((mods & Modifier.PUBLIC) == 0) ||
- ((mods & Modifier.FINAL) != 0) ||
- ((mods & Modifier.STATIC) != 0)) continue;
- FieldData fieldData = metaData.getMetaData(field);
- TableItem item = new TableItem(membersLt, SWT.NONE);
- item.setData(fieldData);
- item.setText(FIELD_NAME_COLUMN, getFieldString(field));
- item.setChecked(fieldData.getGenerate());
- item.setText(FIELD_CAST_COLUMN, fieldData.getCast());
- item.setText(FIELD_FLAGS_COLUMN, getFlagsString(fieldData.getFlags()));
- item.setText(FIELD_ACCESSOR_COLUMN, fieldData.getAccessor());
- /*
- item.setText(FIELD_EXCLUDE_COLUMN, fieldData.getExclude());
- */
- }
- }
- columns = membersLt.getColumns();
- for (int i = 0; i < columns.length; i++) {
- TableColumn column = columns[i];
- column.pack();
- }
- membersLt.setHeaderVisible(true);
- membersLt.setRedraw(true);
-}
-
-void updateParameters() {
- paramsLt.removeAll();
- MetaData metaData = app.getMetaData();
- int[] indices = membersLt.getSelectionIndices();
- if (indices.length != 1) {
- paramsLt.setHeaderVisible(false);
- return;
- }
- TableItem memberItem = membersLt.getItem(indices[0]);
- Object data = memberItem.getData();
- if (!(data instanceof MethodData)) return;
- paramsLt.setRedraw(false);
- MethodData methodData = (MethodData)memberItem.getData();
- Method method = methodData.getMethod();
- Class[] params = method.getParameterTypes();
- for (int i = 0; i < params.length; i++) {
- Class param = params[i];
- ParameterData paramData = metaData.getMetaData(method, i);
- TableItem item = new TableItem(paramsLt, SWT.NONE);
- item.setData(paramData);
- item.setText(PARAM_INDEX_COLUMN, String.valueOf(i));
- item.setText(PARAM_TYPE_COLUMN, getClassString(param));
- item.setText(PARAM_CAST_COLUMN, paramData.getCast());
- item.setText(PARAM_FLAGS_COLUMN, getFlagsString(paramData.getFlags()));
- }
- TableColumn[] columns = paramsLt.getColumns();
- for (int i = 0; i < columns.length; i++) {
- TableColumn column = columns[i];
- column.pack();
- }
- paramsLt.setRedraw(true);
- paramsLt.setHeaderVisible(true);
-}
-
-void updateGenerate(TableItem item) {
- MetaData metaData = app.getMetaData();
- ItemData itemData = (ItemData)item.getData();
- itemData.setGenerate(item.getChecked());
- if (itemData instanceof ClassData) {
- ClassData data = (ClassData)itemData;
- metaData.setMetaData(data.getClazz(), data);
- } else if (itemData instanceof FieldData) {
- FieldData data = (FieldData)itemData;
- item.setText(FIELD_FLAGS_COLUMN, getFlagsString(data.getFlags()));
- metaData.setMetaData(data.getField(), data);
- } else if (itemData instanceof MethodData) {
- MethodData data = (MethodData)itemData;
- item.setText(METHOD_FLAGS_COLUMN, getFlagsString(data.getFlags()));
- metaData.setMetaData(data.getMethod(), data);
- } else if (itemData instanceof ParameterData) {
- ParameterData data = (ParameterData)itemData;
- item.setText(PARAM_FLAGS_COLUMN, getFlagsString(data.getFlags()));
- metaData.setMetaData(data.getMethod(), data.getParameter(), data);
- }
-}
-
-boolean updateOutputDir() {
- String outputDirStr = outputDirCb.getText();
- File file = new File(outputDirStr);
- if (!file.exists()) {
- MessageBox dialog = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
- dialog.setMessage("Output directory does not exist.");
- dialog.open();
- return false;
- }
- if (!file.isDirectory()) {
- MessageBox dialog = new MessageBox(shell, SWT.OK | SWT.ICON_ERROR);
- dialog.setMessage("Output directory is not a directory.");
- dialog.open();
- return false;
- }
- if (outputDirStr.length() > 0) {
- if (!outputDirStr.equals(app.getOutputDir())) {
- app.setOutputDir(outputDirStr);
- }
- if (outputDirCb.indexOf(outputDirStr) == -1) {
- outputDirCb.add(outputDirStr);
- }
- }
- return true;
-}
-
-void updateMainClass() {
- String mainClassStr = mainClassCb.getText();
- if (mainClassStr.length() > 0) {
- if (!mainClassStr.equals(app.getMainClassName())) {
- app.setMainClassName(mainClassStr);
- }
- if (mainClassCb.indexOf(mainClassStr) == -1) {
- mainClassCb.add(mainClassStr);
- }
- if (app.getOutputDir() != null) {
- int index = outputDirCb.indexOf(app.getOutputDir());
- if (index != -1) outputDirCb.select(index);
- }
- }
-}
-
-public static void main(String[] args) {
- JNIGeneratorApp gen = new JNIGeneratorApp ();
- if (args.length > 0) {
- gen.setMainClassName(args[0]);
- if (args.length > 1) gen.setOutputDir(args[1]);
- } else {
- gen.setMainClassName(JNIGeneratorApp.getDefaultMainClass());
- }
- JNIGeneratorAppUI ui = new JNIGeneratorAppUI(gen);
- ui.open();
- ui.run();
-}
-
-}