/** * Creates the state label assignment manager * * @return */ private static JPanel getStatesAssignmentManagerPanel() { JPanel stateAssignmentManagerPanel = new JPanel(); stateAssignmentManagerPanel.setBorder( (new TitledBorder(new EtchedBorder(), "State Label Definition"))); stateAssignmentManagerPanel.setLayout( new BoxLayout(stateAssignmentManagerPanel, BoxLayout.Y_AXIS)); // panel to hold the state definitions and state label panels, as well // as the assignment buttons JPanel stateAssignmentPanel = new JPanel(); stateAssignmentPanel.setLayout(new FlowLayout(FlowLayout.CENTER)); // Create button panel JPanel stateButtonsPanel = new JPanel(); JButton createStateDefinitionButton = new JButton("Define State Group"); ActionListener createStateDefinitionButtonListener = new ActionListener() { public void actionPerformed(ActionEvent arg0) { // check whether places have been defined on the underlying // model boolean okToProceed = QueryManager.getData().checkCurrentData("States"); if (okToProceed) { // bring up the state editor popup StateGroupEditor stateEditor = new StateGroupEditor(); PetriNetView pnModel = ApplicationSettings.getApplicationView().getCurrentPetriNetView(); stateEditor.addState(pnModel); StateLabelManager.update(); } } }; createStateDefinitionButton.addActionListener(createStateDefinitionButtonListener); JButton editStateDefinitionButton = new JButton("Edit State Group"); ActionListener editStateDefinitionButtonListener = new ActionListener() { public void actionPerformed(ActionEvent arg0) { int[] selectedIndices = StateLabelManager.stateGroupsList.getSelectedIndices(); if (selectedIndices.length > 0) { if (selectedIndices.length > 1) { JOptionPane.showMessageDialog( QueryManager.getEditor().getContentPane(), "To edit a state group, please select a single state \n" + "group from the list of states defined on the model.", "Warning", JOptionPane.INFORMATION_MESSAGE); } else { int selectedIndex = selectedIndices[0]; // bring up the state editor popup String selectedStateName = (String) StateLabelManager.stateGroupsList.getModel().getElementAt(selectedIndex); StateGroup selectedState = StateLabelManager.getStateGroup(selectedStateName); StateGroupEditor stateEditor = new StateGroupEditor(); PetriNetView pnModel = ApplicationSettings.getApplicationView().getCurrentPetriNetView(); stateEditor.editState(pnModel, selectedState); StateLabelManager.update(); } } else { JOptionPane.showMessageDialog( QueryManager.getEditor().getContentPane(), "To edit a state group, please select a single state \n" + "group from the list of states defined on the model.", "Warning", JOptionPane.INFORMATION_MESSAGE); } } }; editStateDefinitionButton.addActionListener(editStateDefinitionButtonListener); JButton deleteStateDefinitionButton = new JButton("Delete State Group"); ActionListener deleteStateDefinitionButtonListener = new ActionListener() { public void actionPerformed(ActionEvent arg0) { int[] stateGroupsListSelectedIndices = StateLabelManager.stateGroupsList.getSelectedIndices(); if (stateGroupsListSelectedIndices.length > 0) { PetriNetView pnModel = ApplicationSettings.getApplicationView().getCurrentPetriNetView(); for (int selectionIndex : stateGroupsListSelectedIndices) { String selectedStateName = (String) StateLabelManager.stateGroupsList.getModel().getElementAt(selectionIndex); StateGroup state = StateLabelManager.getStateGroup(selectedStateName); // remove state from _dataLayer pnModel.removeStateGroup(state); // remove all references to the state in all state // labels QueryManager.getData().removeStateFromAllLabels(selectedStateName); } StateLabelManager.update(); } else { JOptionPane.showMessageDialog( QueryManager.getEditor().getContentPane(), "To delete a state group, please select it from the list \n" + "of defined state groups on the left panel.", "Warning", JOptionPane.INFORMATION_MESSAGE); } } }; deleteStateDefinitionButton.addActionListener(deleteStateDefinitionButtonListener); stateButtonsPanel.add(createStateDefinitionButton); stateButtonsPanel.add(editStateDefinitionButton); stateButtonsPanel.add(deleteStateDefinitionButton); // panel for the state definitions JPanel stateDefinitionsPanel = new JPanel(); stateDefinitionsPanel.setBorder( (new TitledBorder(new EtchedBorder(), "State Groups Defined On The Model"))); StateLabelManager.stateGroupsList.setLayoutOrientation(JList.VERTICAL); StateLabelManager.stateGroupsList.setSelectionModel(new ToggleSelectionModel()); StateLabelManager.stateGroupsList.setVisibleRowCount(-1); StateLabelManager.populateStateGroupsList(); JScrollPane stateDefinitionsListScroller = new JScrollPane(StateLabelManager.stateGroupsList); stateDefinitionsListScroller.setPreferredSize(new Dimension(300, 200)); stateDefinitionsPanel.add(stateDefinitionsListScroller); stateAssignmentPanel.add(stateDefinitionsPanel); // panel for the assignment buttons JPanel assignmentButtonsPanel = new JPanel(); assignmentButtonsPanel.setLayout(new BoxLayout(assignmentButtonsPanel, BoxLayout.Y_AXIS)); JButton assignStateToStateLabelButton = new JButton("->"); ActionListener assignStateToStateLabelButtonListener = new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (StateLabelManager.currentStateLabel != null) { int[] stateGroupsListSelectedIndices = StateLabelManager.stateGroupsList.getSelectedIndices(); if (stateGroupsListSelectedIndices.length > 0) { for (int selectionIndex : stateGroupsListSelectedIndices) { String selectedStateName = (String) StateLabelManager.stateGroupsList.getModel().getElementAt(selectionIndex); // assign state to state label QueryManager.getData() .addStateLabel(StateLabelManager.currentStateLabel, selectedStateName); } StateLabelManager.update(); } } else { JOptionPane.showMessageDialog( QueryManager.getEditor().getContentPane(), "Before you can assign state groups to a state label, you have \n" + "to specify the state label. Please choose a label from the \n" + "dropdown menu.\n", "Warning", JOptionPane.INFORMATION_MESSAGE); } } }; assignStateToStateLabelButton.addActionListener(assignStateToStateLabelButtonListener); assignmentButtonsPanel.add(assignStateToStateLabelButton); JButton removeStateFromStateLabelButton = new JButton("<-"); ActionListener removeStateFromStateLabelButtonListener = new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (StateLabelManager.currentStateLabel != null) { int[] statesAssignedSelectedIndices = StateLabelManager.statesAssignedToLabelList.getSelectedIndices(); if (statesAssignedSelectedIndices.length > 0) { for (int selectionIndex : statesAssignedSelectedIndices) { String selectedStateName = (String) StateLabelManager.statesAssignedToLabelList .getModel() .getElementAt(selectionIndex); // remove state from label QueryManager.getData() .removeStateFromStateLabel( StateLabelManager.currentStateLabel, selectedStateName); } } StateLabelManager.update(); } } }; removeStateFromStateLabelButton.addActionListener(removeStateFromStateLabelButtonListener); assignmentButtonsPanel.add(removeStateFromStateLabelButton); stateAssignmentPanel.add(assignmentButtonsPanel); // panel for the states assigned to the state label JPanel statesAssignedToStateLabelPanel = new JPanel(); statesAssignedToStateLabelPanel.setBorder( (new TitledBorder(new EtchedBorder(), "State Groups Assigned To Label"))); StateLabelManager.statesAssignedToLabelList.setLayoutOrientation(JList.VERTICAL); StateLabelManager.statesAssignedToLabelList.setSelectionModel(new ToggleSelectionModel()); StateLabelManager.statesAssignedToLabelList.setVisibleRowCount(-1); StateLabelManager.populateStatesAssignedToLabelList(null); JScrollPane statesAssignedListScroller = new JScrollPane(StateLabelManager.statesAssignedToLabelList); statesAssignedListScroller.setPreferredSize(new Dimension(300, 200)); statesAssignedToStateLabelPanel.add(statesAssignedListScroller); stateAssignmentPanel.add(statesAssignedToStateLabelPanel); // Add components to panel stateAssignmentManagerPanel.add(stateButtonsPanel); stateAssignmentManagerPanel.add(stateAssignmentPanel); return stateAssignmentManagerPanel; }
/** * This method loads the names of the state groups and adds them to the source / destination * JLists */ private static void populateLists() { StateLabelManager.populateStateGroupsList(); StateLabelManager.populateStatesAssignedToLabelList(StateLabelManager.currentStateLabel); }