/machinelearning/5.0.x/drools-core/src/main/java/org/drools/process/instance/impl/demo/UIWorkItemHandler.java
https://github.com/droolsjbpm/droolsjbpm-contributed-experiments · Java · 168 lines · 141 code · 23 blank · 4 comment · 15 complexity · 6f647b4e0240c059b338c46c713fefd0 MD5 · raw file
- package org.drools.process.instance.impl.demo;
-
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.awt.GridBagConstraints;
- import java.awt.GridBagLayout;
- import java.awt.Insets;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.MouseAdapter;
- import java.awt.event.MouseEvent;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
-
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JList;
- import javax.swing.JPanel;
- import javax.swing.ListSelectionModel;
- import javax.swing.WindowConstants;
- import javax.swing.event.ListSelectionEvent;
- import javax.swing.event.ListSelectionListener;
-
- import org.drools.runtime.process.WorkItem;
- import org.drools.runtime.process.WorkItemHandler;
- import org.drools.runtime.process.WorkItemManager;
-
- /**
- *
- * @author <a href="mailto:kris_verlaenen@hotmail.com">Kris Verlaenen</a>
- */
- public class UIWorkItemHandler extends JFrame implements WorkItemHandler {
-
- private static final long serialVersionUID = 400L;
-
- private Map<WorkItem, WorkItemManager> workItems = new HashMap<WorkItem, WorkItemManager>();
- private JList workItemsList;
- private JButton selectButton;
-
- public UIWorkItemHandler() {
- setSize(new Dimension(400, 300));
- setTitle("Work Items");
- setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- initializeComponent();
- }
-
- private void initializeComponent() {
- JPanel panel = new JPanel();
- panel.setLayout(new GridBagLayout());
- getRootPane().setLayout(new BorderLayout());
- getRootPane().add(panel, BorderLayout.CENTER);
-
- workItemsList = new JList();
- workItemsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- workItemsList.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- if (e.getClickCount() == 2) {
- select();
- }
- }
- });
- workItemsList.addListSelectionListener(new ListSelectionListener() {
- public void valueChanged(ListSelectionEvent e) {
- selectButton.setEnabled(getSelectedWorkItem() != null);
- }
- });
- reloadWorkItemsList();
- GridBagConstraints c = new GridBagConstraints();
- c.weightx = 1;
- c.weighty = 1;
- c.fill = GridBagConstraints.BOTH;
- c.insets = new Insets(5, 5, 5, 5);
- panel.add(workItemsList, c);
-
- selectButton = new JButton("Select");
- selectButton.setEnabled(false);
- selectButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- select();
- }
- });
- c = new GridBagConstraints();
- c.gridy = 1;
- c.weightx = 1;
- c.anchor = GridBagConstraints.EAST;
- c.insets = new Insets(5, 5, 5, 5);
- panel.add(selectButton, c);
- }
-
- private void select() {
- WorkItem workItem = getSelectedWorkItem();
- if (workItem != null) {
- UIWorkItemHandlerDialog dialog = new UIWorkItemHandlerDialog(UIWorkItemHandler.this, workItem);
- dialog.setVisible(true);
- }
- }
-
- public WorkItem getSelectedWorkItem() {
- int index = workItemsList.getSelectedIndex();
- if (index != -1) {
- Object selected = workItemsList.getModel().getElementAt(index);
- if (selected instanceof WorkItemWrapper) {
- return ((WorkItemWrapper) selected).getWorkItem();
- }
- }
- return null;
- }
-
- private void reloadWorkItemsList() {
- List<WorkItemWrapper> result = new ArrayList<WorkItemWrapper>();
- for (Iterator<WorkItem> iterator = workItems.keySet().iterator(); iterator.hasNext(); ) {
- WorkItem workItem = iterator.next();
- result.add(new WorkItemWrapper(workItem));
- }
- workItemsList.setListData(result.toArray());
- }
-
- public void complete(WorkItem workItem, Map<String, Object> results) {
- WorkItemManager manager = workItems.get(workItem);
- if (manager != null) {
- manager.completeWorkItem(workItem.getId(), results);
- workItems.remove(workItem);
- reloadWorkItemsList();
- }
- selectButton.setEnabled(getSelectedWorkItem() != null);
- }
-
- public void abort(WorkItem workItem) {
- WorkItemManager manager = workItems.get(workItem);
- if (manager != null) {
- manager.abortWorkItem(workItem.getId());
- workItems.remove(workItem);
- reloadWorkItemsList();
- }
- selectButton.setEnabled(getSelectedWorkItem() != null);
- }
-
- public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
- workItems.remove(workItem);
- reloadWorkItemsList();
- }
-
- public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
- workItems.put(workItem, manager);
- reloadWorkItemsList();
- }
-
- private class WorkItemWrapper {
-
- private WorkItem workItem;
-
- public WorkItemWrapper(WorkItem workItem) {
- this.workItem = workItem;
- }
-
- public WorkItem getWorkItem() {
- return workItem;
- }
-
- public String toString() {
- return workItem.getName() + " [" + workItem.getId() + "]";
- }
- }
-
- }