From b9402204384bb5cfc25e6038d2f976f9f0c16fba Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Mon, 18 Nov 2013 09:53:33 +0100 Subject: 3.0-SNAPSHOT IssueID #28 --- .../gui/lifecycle/instance/TransitionPanel.java | 75 +++++++++++++++------- 1 file changed, 51 insertions(+), 24 deletions(-) (limited to 'src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java') diff --git a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java index b1406c5..f8cbff2 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/instance/TransitionPanel.java @@ -4,6 +4,7 @@ import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.Map; import javax.swing.Box; import javax.swing.JButton; @@ -12,6 +13,7 @@ import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; +import com.c2kernel.common.InvalidDataException; import com.c2kernel.entity.agent.Job; import com.c2kernel.entity.proxy.ItemProxy; import com.c2kernel.graph.model.Vertex; @@ -20,9 +22,9 @@ import com.c2kernel.gui.graph.view.SelectedVertexPanel; import com.c2kernel.gui.tabs.EntityTabPane; import com.c2kernel.gui.tabs.execution.Executor; import com.c2kernel.lifecycle.instance.Activity; +import com.c2kernel.lifecycle.instance.stateMachine.State; import com.c2kernel.lifecycle.instance.stateMachine.StateMachine; -import com.c2kernel.lifecycle.instance.stateMachine.States; -import com.c2kernel.lifecycle.instance.stateMachine.Transitions; +import com.c2kernel.lifecycle.instance.stateMachine.Transition; import com.c2kernel.utils.Logger; /************************************************************************** @@ -40,7 +42,7 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen protected GridBagConstraints c; protected Box transBox; protected JComboBox executors; - protected JComboBox states = new JComboBox(States.states); + protected JComboBox states = new JComboBox(); protected JCheckBox active = new JCheckBox(); protected JLabel status = new JLabel(); protected ItemProxy mItem; @@ -106,27 +108,56 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen clear(); if (!(vert instanceof Activity)) return; mCurrentAct = (Activity)vert; - states.setSelectedIndex(mCurrentAct.getCurrentState()); + StateMachine sm; + try { + sm = mCurrentAct.getStateMachine(); + } catch (InvalidDataException e) { + status.setText("Invalid state machine."); + Logger.error(e); + return; + } + states.removeAllItems(); + int currentState; + try { + currentState = mCurrentAct.getState(); + } catch (InvalidDataException e) { + status.setText("Could not find activity state"); + Logger.error(e); + return; + } + for (State thisState : sm.getStates()) { + states.addItem(thisState); + if (currentState == thisState.getId()) + states.setSelectedItem(thisState); + } states.setEnabled(true); active.setSelected(mCurrentAct.active); active.setEnabled(true); Logger.msg(1, "Retrieving possible transitions for activity "+mCurrentAct.getName()); - int[] transitions = mCurrentAct.getMachine().possibleTransition(); - if (transitions.length == 0) { + Map transitions; + try { + transitions = mCurrentAct.getStateMachine().getPossibleTransitions(mCurrentAct, MainFrame.userAgent.getPath()); + } catch (Exception e) { + status.setText("Error loading possible transitions of activity. See log."); + Logger.error(e); + return; + } + + if (transitions.size() == 0) { status.setText("None"); return; } - for (int i = 0; i < transitions.length; i++) { - String trans= Transitions.getTransitionName(transitions[i]); - if (!(transitions[i]==Transitions.DONE) && !(transitions[i]==Transitions.COMPLETE)) { - String buttonLabel = trans.substring(0,1).toUpperCase()+trans.substring(1); - JButton thisTrans = new JButton(buttonLabel); - thisTrans.setActionCommand("Trans:"+String.valueOf(transitions[i])); + + for (Transition trans:transitions.keySet()) { + + if (!trans.hasOutcome() || (trans.hasOutcome() && !trans.getOutcome().isRequired())) { + JButton thisTrans = new JButton(trans.getName()); + thisTrans.setActionCommand("Trans:"+trans.getId()); thisTrans.addActionListener(this); transBox.add(thisTrans); transBox.add(Box.createHorizontalGlue()); } - status.setText(transitions.length+" transitions possible."); + status.setText(transitions.size()+" transitions possible."); } revalidate(); } @@ -138,22 +169,19 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen return; } if (e.getSource() == states && mCurrentAct != null) { - mCurrentAct.getMachine().state = states.getSelectedIndex(); + mCurrentAct.setState(states.getSelectedIndex()); return; } if (!e.getActionCommand().startsWith("Trans:")) return; int transition = Integer.parseInt(e.getActionCommand().substring(6)); Logger.msg("Requesting transition "+transition); - Job thisJob = new Job(mItem.getSystemKey(), - mCurrentAct.getPath(), - transition, - new StateMachine(mCurrentAct).simulate(transition), - mCurrentAct.getCurrentState(), - mCurrentAct.getName(), - mCurrentAct.getProperties(), - mCurrentAct.getType(), - MainFrame.userAgent.getName()); try { + StateMachine actSM = mCurrentAct.getStateMachine(); + Job thisJob = new Job(mCurrentAct, + mItem.getSystemKey(), + actSM.getTransition(transition), + MainFrame.userAgent.getPath(), + "Admin"); Executor selectedExecutor = (Executor)executors.getSelectedItem(); selectedExecutor.execute(thisJob, status); } catch (Exception ex) { @@ -170,7 +198,6 @@ public class TransitionPanel extends SelectedVertexPanel implements ActionListen mCurrentAct = null; transBox.removeAll(); status.setText("No activity selected"); - states.setSelectedIndex(0); states.setEnabled(false); active.setSelected(false); active.setEnabled(false); -- cgit v1.2.3