[jbpm-commits] JBoss JBPM SVN: r2896 - in projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client: widgets and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed Nov 12 16:42:38 EST 2008
Author: heiko.braun at jboss.com
Date: 2008-11-12 16:42:38 -0500 (Wed, 12 Nov 2008)
New Revision: 2896
Added:
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenEditor.java
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenForm.java
Modified:
projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
Log:
Refactor token management into dedicated TokenEditor (sweet)
Modified: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java 2008-11-12 20:07:07 UTC (rev 2895)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceListEditor.java 2008-11-12 21:42:38 UTC (rev 2896)
@@ -23,14 +23,17 @@
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.http.client.*;
-import com.google.gwt.json.client.JSONObject;
-import com.google.gwt.user.client.ui.ListBox;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Position;
-import com.gwtext.client.data.*;
-import com.gwtext.client.widgets.*;
+import com.gwtext.client.data.Record;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.PaddedPanel;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.TabPanel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.widgets.form.*;
+import com.gwtext.client.widgets.form.DateField;
+import com.gwtext.client.widgets.form.FormPanel;
+import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.grid.RowSelectionModel;
import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
import com.gwtext.client.widgets.layout.ColumnLayout;
@@ -40,17 +43,11 @@
import org.jboss.bpm.console.client.UIConstants;
import org.jboss.bpm.console.client.model.ProcessDefinition;
import org.jboss.bpm.console.client.model.ProcessInstance;
-import org.jboss.bpm.console.client.model.DTOParser;
import org.jboss.bpm.console.client.model.jbpm3.TokenReference;
-import org.jboss.bpm.console.client.util.JSONWalk;
import org.jboss.bpm.console.client.widgets.HelpPanel;
import org.jboss.bpm.console.client.widgets.TeaserPanel;
+import org.jboss.bpm.console.client.widgets.TokenEditor;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Set;
-
/**
* @author Heiko.Braun <heiko.braun at jboss.com>
*
@@ -62,14 +59,7 @@
private ProcessDefinition parent;
private ProcessInstanceList instanceList;
- private FormPanel tokenForm;
- private Button signalButton;
- final ArrayReader reader = new ArrayReader(new RecordDef(
- new FieldDef[]{
- new StringFieldDef("signal")
- }
- ));
-
+ private Panel tokenEditorPanel;
private ProcessInstance selectedInstance;
public ProcessInstanceListEditor(ProcessDefinition proc, MainView view)
@@ -109,10 +99,10 @@
// ----------------------------------------
Panel detailsForm = assembleDetailsForm();
- Panel tokenForm = assembleTokenForm();
+ tokenEditorPanel = new Panel("Tokens");
tabPanel.add( detailsForm );
- tabPanel.add( tokenForm );
+ tabPanel.add(tokenEditorPanel);
// ----------------------------------
@@ -131,71 +121,6 @@
}
- private Panel assembleTokenForm()
- {
- Panel outerFormPanel = new Panel();
- outerFormPanel.setTitle("Tokens");
- outerFormPanel.setBorder(false);
- outerFormPanel.setFrame(false);
-
- tokenForm = createBaseFormPanel();
-
- TextField idField = new TextField("Id", "id", 230);
- idField.setReadOnly(true);
- tokenForm.add(idField);
-
- //tokenForm.add(new TextField("Token Name", "name", 230));
- TextField nameField = new TextField("Current Node Name", "nodeName", 230);
- nameField.setReadOnly(true);
- tokenForm.add(nameField);
-
-
- MemoryProxy dataProxy = createMemoryProxy(new ArrayList<String>());
- Store store = new Store(dataProxy, reader);
- store.load();
-
- ComboBox cb = new ComboBox();
- cb.setFieldLabel("Signal");
- cb.setHiddenName("signal");
- cb.setStore(store);
- cb.setDisplayField("signal");
- cb.setMode(ComboBox.LOCAL);
- cb.setTriggerAction(ComboBox.ALL);
- cb.setEmptyText("");
- cb.setSelectOnFocus(true);
- cb.setWidth(190);
- cb.setEditable(false);
- tokenForm.add(cb);
-
- signalButton = new Button("Signal",
- new ButtonListenerAdapter()
- {
-
- public void onClick(Button button, EventObject eventObject)
- {
- ComboBox cb = (ComboBox)tokenForm.getForm().findField("signal");
- String signalValue = cb.getValueAsString();
- if(signalValue.equals(""))
- MessageBox.alert("Please select a signal");
- else
- Log.debug("Singal -> " + signalValue); // TODO: integration
- }
- }
- );
-
- tokenForm.addButton(signalButton);
- outerFormPanel.add(tokenForm);
-
- return outerFormPanel;
- }
-
- private MemoryProxy createMemoryProxy(List signals)
- {
- return new MemoryProxy(
- new Object[][]{ signals.toArray()}
- );
- }
-
private Panel assembleDetailsForm()
{
// ---------------
@@ -268,8 +193,20 @@
detailsForm.getForm().loadRecord(record);
detailsForm.doLayout();
+ TokenEditor.SignalCallback callback = new TokenEditor.SignalCallback()
+ {
+ public void onSignalToken(TokenReference tok, String signal)
+ {
+ Log.debug("signal -> " +signal );
+ }
+ };
+
// token form update
- populateTokenForm(selectedInstance);
+ tokenEditorPanel.clear();
+ tokenEditorPanel.add( // TODO: LRU caching (i.e. last 5)
+ new TokenEditor(selectedInstance, callback)
+ );
+ tokenEditorPanel.doLayout();
}
}
);
@@ -279,47 +216,17 @@
return outerFormPanel;
}
- /**
- * on row selection callback
- */
- private void populateTokenForm(ProcessInstance selectedInstance)
- {
- TokenReference tok = selectedInstance.getRootToken();
- Form form = tokenForm.getForm();
-
- if(form.findField("id")!=null) // TODO: the fields are not initialized on first callback?
- {
- form.findField("id").setRawValue(tok.getId()+"");
- form.findField("nodeName").setRawValue(tok.getCurrentNodeName());
-
- // refresh combo box
- ComboBox cb = (ComboBox)form.findField("signal");
- cb.reset();
-
- MemoryProxy dataProxy = createMemoryProxy(tok.getAvailableSignals());
- Store store = new Store(dataProxy, reader);
- store.load();
- cb.setStore(store);
-
- // suspended instances cannot be signaled
- if(selectedInstance.isSuspended())
- signalButton.disable();
- else
- signalButton.enable();
- }
- }
-
private FormPanel createBaseFormPanel()
{
- final FormPanel detailsForm = new FormPanel();
- detailsForm.setLabelAlign(Position.LEFT);
- detailsForm.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
- detailsForm.setHeader(false);
- detailsForm.setFrame(false);
- detailsForm.setBorder(false);
- detailsForm.setPaddings(5, 5, 5, 0);
- detailsForm.setLabelWidth(120);
- return detailsForm;
+ final FormPanel formPanel = new FormPanel();
+ formPanel.setLabelAlign(Position.LEFT);
+ formPanel.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
+ formPanel.setHeader(false);
+ formPanel.setFrame(false);
+ formPanel.setBorder(false);
+ formPanel.setPaddings(5, 5, 5, 0);
+ formPanel.setLabelWidth(120);
+ return formPanel;
}
private void persistStateChange()
Added: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenEditor.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenEditor.java (rev 0)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenEditor.java 2008-11-12 21:42:38 UTC (rev 2896)
@@ -0,0 +1,125 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.console.client.widgets;
+
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.data.Node;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.layout.HorizontalLayout;
+import com.gwtext.client.widgets.tree.TreeNode;
+import com.gwtext.client.widgets.tree.TreePanel;
+import com.gwtext.client.widgets.tree.event.TreeNodeListenerAdapter;
+import org.jboss.bpm.console.client.model.ProcessInstance;
+import org.jboss.bpm.console.client.model.jbpm3.TokenReference;
+
+/**
+ * @author Heiko.Braun <heiko.braun at jboss.com>
+ */
+public class TokenEditor extends Panel
+{
+
+ private TokenForm tokenForm;
+
+ public TokenEditor(final ProcessInstance instance, final SignalCallback callback)
+ {
+ super();
+
+ this.setHeader(false);
+ this.setBorder(false);
+ this.setFrame(false);
+
+ this.setLayout(new HorizontalLayout(10));
+
+ this.add( new TokenTree(instance.getRootToken(),
+ new TokenSelectionCallback()
+ {
+ public void onSelectedToken(TokenReference tok)
+ {
+ // update form
+ tokenForm.display(instance, tok);
+ }
+ }
+ ) );
+
+ tokenForm = new TokenForm(callback);
+ tokenForm.display(instance); // shows the root token
+ this.add(tokenForm);
+ }
+
+ class TokenTree extends TreePanel
+ {
+ private TokenSelectionCallback callback;
+
+ public TokenTree(final TokenReference rootToken,
+ final TokenSelectionCallback callback)
+ {
+ this.callback = callback;
+
+ TreeNode outermost = new TreeNode("Tokens");
+ TreeNode rootNode = buildTreeNode(rootToken);
+ outermost.appendChild(rootNode);
+
+ buildChildNodes(rootNode, rootToken);
+
+ setRootVisible(true);
+ setRootNode(outermost);
+ outermost.setExpanded(true);
+ }
+
+ private void buildChildNodes(TreeNode parent, TokenReference rootToken)
+ {
+ for(final TokenReference childToken : rootToken.getChildren())
+ {
+ TreeNode child = buildTreeNode(childToken);
+ buildChildNodes(child, childToken); // recursive
+ parent.appendChild(child);
+ }
+ }
+
+ private TreeNode buildTreeNode(final TokenReference tok)
+ {
+ TreeNode treeNode = new TreeNode("Token " +tok.getId());
+ treeNode.setExpanded(true);
+ treeNode.addListener(
+ new TreeNodeListenerAdapter()
+ {
+ public void onClick(Node node, EventObject eventObject)
+ {
+ callback.onSelectedToken(tok);
+ }
+ }
+ );
+ return treeNode;
+ }
+ }
+
+ interface TokenSelectionCallback
+ {
+ void onSelectedToken(TokenReference tok);
+ }
+
+ public interface SignalCallback
+ {
+ void onSignalToken(TokenReference tok, String signal);
+ }
+}
+
Added: projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenForm.java
===================================================================
--- projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenForm.java (rev 0)
+++ projects/gwt-console/trunk/war/src/main/java/org/jboss/bpm/console/client/widgets/TokenForm.java 2008-11-12 21:42:38 UTC (rev 2896)
@@ -0,0 +1,176 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.console.client.widgets;
+
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.core.Position;
+import com.gwtext.client.data.*;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.MessageBox;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.form.ComboBox;
+import com.gwtext.client.widgets.form.Form;
+import com.gwtext.client.widgets.form.FormPanel;
+import com.gwtext.client.widgets.form.TextField;
+import org.jboss.bpm.console.client.UIConstants;
+import org.jboss.bpm.console.client.model.ProcessInstance;
+import org.jboss.bpm.console.client.model.jbpm3.TokenReference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Heiko.Braun <heiko.braun at jboss.com>
+ */
+public class TokenForm extends Panel
+{
+ private FormPanel tokenForm;
+ private Button signalButton;
+ final ArrayReader reader = new ArrayReader(new RecordDef(
+ new FieldDef[]{
+ new StringFieldDef("signal")
+ }
+ ));
+
+ private TokenReference lastSelectedToken;
+
+ public TokenForm(final TokenEditor.SignalCallback callback)
+ {
+ super();
+
+ this.setHeader(false);
+ this.setBorder(false);
+ this.setFrame(false);
+
+ tokenForm = new FormPanel();
+ tokenForm.setLabelAlign(Position.LEFT);
+ tokenForm.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
+ tokenForm.setHeader(false);
+ tokenForm.setFrame(false);
+ tokenForm.setBorder(false);
+ tokenForm.setPaddings(5, 5, 5, 0);
+ tokenForm.setLabelWidth(120);
+
+ // ----------
+
+ TextField idField = new TextField("Id", "id", 230);
+ idField.setReadOnly(true);
+ tokenForm.add(idField);
+
+ //tokenForm.add(new TextField("Token Name", "name", 230));
+ TextField nameField = new TextField("Current Node Name", "nodeName", 230);
+ nameField.setReadOnly(true);
+ tokenForm.add(nameField);
+
+
+ // ----------
+ MemoryProxy dataProxy = createMemoryProxy(new ArrayList<String>());
+ Store store = new Store(dataProxy, reader);
+ store.load();
+
+ ComboBox cb = new ComboBox();
+ cb.setFieldLabel("Signal");
+ cb.setHiddenName("signal");
+ cb.setStore(store);
+ cb.setDisplayField("signal");
+ cb.setMode(ComboBox.LOCAL);
+ cb.setTriggerAction(ComboBox.ALL);
+ cb.setEmptyText("");
+ cb.setSelectOnFocus(true);
+ cb.setWidth(190);
+ cb.setEditable(false);
+ tokenForm.add(cb);
+
+ signalButton = new Button("Signal",
+ new ButtonListenerAdapter()
+ {
+ public void onClick(Button button, EventObject eventObject)
+ {
+ ComboBox cb = (ComboBox)tokenForm.getForm().findField("signal");
+ String signalValue = cb.getValueAsString();
+ if(signalValue.equals(""))
+ MessageBox.alert("Please select a signal");
+ else
+ callback.onSignalToken(lastSelectedToken, signalValue);
+ }
+ }
+ );
+
+ tokenForm.addButton(signalButton);
+
+ // -------------------
+
+ this.add(tokenForm);
+
+ }
+
+ /**
+ * display the root token
+ */
+ void display(ProcessInstance processInstance)
+ {
+ display(processInstance, processInstance.getRootToken());
+ }
+
+ /**
+ * display a particular token
+ */
+ void display(ProcessInstance processInstance, TokenReference tok)
+ {
+ Form form = tokenForm.getForm();
+
+ if(form.findField("id")!=null) // TODO: the fields are not initialized on first callback?
+ {
+ form.findField("id").setRawValue(tok.getId()+"");
+ form.findField("nodeName").setRawValue(tok.getCurrentNodeName());
+
+ // refresh combo box
+ ComboBox cb = (ComboBox)form.findField("signal");
+ cb.reset();
+
+ MemoryProxy dataProxy = createMemoryProxy(tok.getAvailableSignals());
+ Store store = new Store(dataProxy, reader);
+ store.load();
+ cb.setStore(store);
+
+ // suspended instances cannot be signaled
+ if(processInstance.isSuspended())
+ signalButton.disable();
+ else
+ signalButton.enable();
+
+ }
+
+ // -----------
+
+
+ lastSelectedToken = tok;
+ }
+
+ private MemoryProxy createMemoryProxy(List signals)
+ {
+ return new MemoryProxy(
+ new Object[][]{ signals.toArray()}
+ );
+ }
+}
More information about the jbpm-commits
mailing list