summaryrefslogtreecommitdiffstats
path: root/scripting/examples/java
diff options
context:
space:
mode:
authorSander Vesik <svesik@openoffice.org>2004-04-19 22:00:49 +0000
committerSander Vesik <svesik@openoffice.org>2004-04-19 22:00:49 +0000
commit8ce7a7d70d2894e9d61ce2fdd10975233ebfda52 (patch)
tree796d0c43399ba4004294fe9fdbfcfe5dbda192d5 /scripting/examples/java
parentINTEGRATION: CWS scriptingf5 (1.2.2); FILE MERGED (diff)
downloadcore-8ce7a7d70d2894e9d61ce2fdd10975233ebfda52.tar.gz
core-8ce7a7d70d2894e9d61ce2fdd10975233ebfda52.zip
INTEGRATION: CWS scriptingf5 (1.5.14); FILE MERGED
2004/02/17 15:06:05 toconnor 1.5.14.1: #i25262# - Execute modified source in editor window if one exists
Diffstat (limited to 'scripting/examples/java')
-rw-r--r--scripting/examples/java/selector/ScriptSelector.java193
1 files changed, 102 insertions, 91 deletions
diff --git a/scripting/examples/java/selector/ScriptSelector.java b/scripting/examples/java/selector/ScriptSelector.java
index 8f370acefb08..2c54196f69df 100644
--- a/scripting/examples/java/selector/ScriptSelector.java
+++ b/scripting/examples/java/selector/ScriptSelector.java
@@ -39,61 +39,13 @@ public class ScriptSelector {
private static final int BIG_GAP = 10;
private static final int MED_GAP = 5;
- public static String go(final XScriptContext ctxt)
- {
- String result = "";
-
- try {
- XBrowseNode root = getRootNode(ctxt);
-
- final ScriptSelectorPanel selectorPanel =
- new ScriptSelectorPanel(root);
-
- final JOptionPane optionPane = new JOptionPane(
- selectorPanel,
- JOptionPane.PLAIN_MESSAGE,
- JOptionPane.OK_CANCEL_OPTION);
+ private ScriptSelectorPanel selectorPanel;
- final JDialog dialog = new JDialog();
- dialog.setModal(true);
- dialog.setContentPane(optionPane);
- dialog.setDefaultCloseOperation(
- JDialog.DO_NOTHING_ON_CLOSE);
-
- optionPane.addPropertyChangeListener(
- new PropertyChangeListener() {
- public void propertyChange(java.beans.PropertyChangeEvent e)
- {
- String prop = e.getPropertyName();
-
- if (dialog.isVisible()
- && (e.getSource() == optionPane)
- && (prop.equals(JOptionPane.VALUE_PROPERTY))) {
- dialog.setVisible(false);
- }
- }
- }
- );
-
- dialog.pack();
- dialog.setSize(375, 350);
- dialog.setVisible(true);
-
- int value = ((Integer)optionPane.getValue()).intValue();
- if (value == JOptionPane.YES_OPTION) {
- result = selectorPanel.textField.getText();
- }
- }
- catch (com.sun.star.uno.RuntimeException rue) {
- rue.printStackTrace();
- }
- catch (java.lang.Exception e) {
- e.printStackTrace();
- }
- return result;
+ public ScriptSelector()
+ {
}
- public static void showOrganizer(final XScriptContext ctxt)
+ public void showOrganizer(final XScriptContext ctxt)
{
try {
XBrowseNode root = getRootNode(ctxt);
@@ -104,10 +56,9 @@ public class ScriptSelector {
final JFrame client = new JFrame("Script");
- final ScriptSelectorPanel selectorPanel =
- new ScriptSelectorPanel(root);
+ selectorPanel = new ScriptSelectorPanel(root);
- final JButton runButton, closeButton, assignButton,
+ final JButton runButton, closeButton, createButton,
editButton, deleteButton;
runButton = new JButton("Run");
@@ -121,12 +72,11 @@ public class ScriptSelector {
JPanel northButtons =
new JPanel(new GridLayout(2, 1, MED_GAP, MED_GAP));
- // northButtons.add(runButton);
- northButtons.add(editButton);
+ northButtons.add(runButton);
northButtons.add(closeButton);
- assignButton = new JButton("Assign");
- assignButton.setEnabled(false);
+ createButton = new JButton("Create");
+ createButton.setEnabled(false);
deleteButton = new JButton("Delete");
deleteButton.setEnabled(false);
@@ -134,9 +84,9 @@ public class ScriptSelector {
JPanel southButtons =
new JPanel(new GridLayout(3, 1, MED_GAP, MED_GAP));
- // southButtons.add(assignButton);
- // southButtons.add(editButton);
- // southButtons.add(deleteButton);
+ southButtons.add(editButton);
+ southButtons.add(createButton);
+ southButtons.add(deleteButton);
selectorPanel.tree.addTreeSelectionListener(
new TreeSelectionListener() {
@@ -145,6 +95,7 @@ public class ScriptSelector {
XPropertySet props = (XPropertySet)
UnoRuntime.queryInterface(XPropertySet.class, xbn);
+ checkEnabled(props, "Creatable", createButton);
checkEnabled(props, "Deletable", deleteButton);
checkEnabled(props, "Editable", editButton);
@@ -185,8 +136,6 @@ public class ScriptSelector {
client.dispose();
}
else if (event.getSource() == editButton) {
- String uri = selectorPanel.textField.getText();
-
DefaultMutableTreeNode node =
(DefaultMutableTreeNode)
selectorPanel.tree.getLastSelectedPathComponent();
@@ -195,16 +144,30 @@ public class ScriptSelector {
showEditor(ctxt, node);
}
- else if (event.getSource() == assignButton) {
+ else if (event.getSource() == createButton) {
+ DefaultMutableTreeNode node =
+ (DefaultMutableTreeNode)
+ selectorPanel.tree.getLastSelectedPathComponent();
+
+ if (node == null) return;
+
+ doCreate(ctxt, node);
}
else if (event.getSource() == deleteButton) {
+ DefaultMutableTreeNode node =
+ (DefaultMutableTreeNode)
+ selectorPanel.tree.getLastSelectedPathComponent();
+
+ if (node == null) return;
+
+ doDelete(ctxt, node);
}
}
};
runButton.addActionListener(listener);
closeButton.addActionListener(listener);
- assignButton.addActionListener(listener);
+ createButton.addActionListener(listener);
editButton.addActionListener(listener);
deleteButton.addActionListener(listener);
@@ -220,7 +183,16 @@ public class ScriptSelector {
client.getContentPane().add(mainPanel);
client.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- client.setSize(375, 350);
+ client.setSize(500, 350);
+
+ // set the x and y locations so that the frame is in the
+ // centre of the screen
+ Dimension d = client.getToolkit().getScreenSize();
+
+ int x = (int)((d.getWidth() - client.getWidth()) / 2);
+ int y = (int)((d.getHeight() - client.getHeight()) / 2);
+
+ client.setLocation(x, y);
client.show();
}
@@ -232,7 +204,7 @@ public class ScriptSelector {
}
}
- private static void showEditor(
+ private void doDelete(
XScriptContext ctxt, DefaultMutableTreeNode node)
{
Object obj = node.getUserObject();
@@ -241,42 +213,61 @@ public class ScriptSelector {
XInvocation.class, obj);
Object[] args = new Object[] { ctxt };
try {
- inv.invoke("Editable", args,
+ Object result = inv.invoke("Deletable", args,
new short[1][0], new Object[1][0]);
+
+ if (result != null && AnyConverter.toBoolean(result) == true)
+ {
+ selectorPanel.removeNode(node);
+ }
}
catch (Exception e) {
e.printStackTrace();
}
}
- private static void showBasicEditor(XScriptContext ctxt) {
- XComponentContext xcc = ctxt.getComponentContext();
- XModel doc = ctxt.getDocument();
-
- System.err.println("let's start the Basic IDE");
-
+ private void doCreate(
+ XScriptContext ctxt, DefaultMutableTreeNode node)
+ {
+ Object obj = node.getUserObject();
+ XInvocation inv =
+ (XInvocation)UnoRuntime.queryInterface(
+ XInvocation.class, obj);
+ Object[] args = new Object[] { ctxt };
try {
- XDispatchProvider xProvider = (XDispatchProvider)
- UnoRuntime.queryInterface(XDispatchProvider.class,
- doc.getCurrentController().getFrame());
-
- Object obj = xcc.getServiceManager().createInstanceWithContext(
- "com.sun.star.frame.DispatchHelper", xcc);
+ Object result = inv.invoke("Creatable", args,
+ new short[1][0], new Object[1][0]);
- XDispatchHelper xDispatchHelper =
- (XDispatchHelper)UnoRuntime.queryInterface(
- XDispatchHelper.class, obj);
+ if (result != null)
+ {
+ XBrowseNode xbn = (XBrowseNode)
+ AnyConverter.toObject(new Type(XBrowseNode.class), result);
+ selectorPanel.addNode(node, xbn);
+ }
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
- xDispatchHelper.executeDispatch(xProvider,
- ".uno:BasicIDEAppear", "", 0,
- new com.sun.star.beans.PropertyValue[0]);
+ private void showEditor(
+ XScriptContext ctxt, DefaultMutableTreeNode node)
+ {
+ Object obj = node.getUserObject();
+ XInvocation inv =
+ (XInvocation)UnoRuntime.queryInterface(
+ XInvocation.class, obj);
+ Object[] args = new Object[] { ctxt };
+ try {
+ inv.invoke("Editable", args,
+ new short[1][0], new Object[1][0]);
}
catch (Exception e) {
e.printStackTrace();
}
}
- private static void checkEnabled(XPropertySet props, String name,
+ private void checkEnabled(XPropertySet props, String name,
JButton button)
{
boolean enable = false;
@@ -306,7 +297,7 @@ public class ScriptSelector {
button.setEnabled(enable);
}
- private static XBrowseNode getRootNode(XScriptContext ctxt) {
+ private XBrowseNode getRootNode(XScriptContext ctxt) {
XBrowseNode result = null;
@@ -338,6 +329,7 @@ class ScriptSelectorPanel extends JPanel {
private XBrowseNode myrootnode = null;
public JTextField textField;
public JTree tree;
+ public DefaultTreeModel treeModel;
public ScriptSelectorPanel(XBrowseNode root)
{
@@ -366,7 +358,8 @@ class ScriptSelectorPanel extends JPanel {
}
};
initNodes(myrootnode, top);
- tree = new JTree(top);
+ treeModel = new DefaultTreeModel(top);
+ tree = new JTree(treeModel);
tree.setCellRenderer(new ScriptTreeRenderer());
@@ -404,7 +397,25 @@ class ScriptSelectorPanel extends JPanel {
textField = new JTextField();
add(textField, BorderLayout.SOUTH);
- setSize(600, 300);
+ }
+
+ public void removeNode(DefaultMutableTreeNode node) {
+ MutableTreeNode parent = (MutableTreeNode)(node.getParent());
+ if (parent != null) {
+ treeModel.removeNodeFromParent(node);
+ }
+ }
+
+ public void addNode(DefaultMutableTreeNode parent, XBrowseNode xbn) {
+ DefaultMutableTreeNode newNode =
+ new DefaultMutableTreeNode(xbn) {
+ public String toString() {
+ return ((XBrowseNode)getUserObject()).getName();
+ }
+ };
+
+ treeModel.insertNodeInto(newNode, parent, parent.getChildCount());
+ tree.scrollPathToVisible(new TreePath(newNode.getPath()));
}
private void initNodes(XBrowseNode parent, DefaultMutableTreeNode top) {