From b086f57f56bf0eb9dab9cf321a0f69aaaae84347 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 30 May 2012 08:37:45 +0200 Subject: Initial Maven Conversion --- .../java/com/c2kernel/gui/tabs/JobListPane.java | 312 +++++++++++++++++++++ 1 file changed, 312 insertions(+) create mode 100644 src/main/java/com/c2kernel/gui/tabs/JobListPane.java (limited to 'src/main/java/com/c2kernel/gui/tabs/JobListPane.java') diff --git a/src/main/java/com/c2kernel/gui/tabs/JobListPane.java b/src/main/java/com/c2kernel/gui/tabs/JobListPane.java new file mode 100644 index 0000000..619a589 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/tabs/JobListPane.java @@ -0,0 +1,312 @@ +/* + * StatusPane.java + * + * Created on March 20, 2001, 3:30 PM + */ + +package com.c2kernel.gui.tabs; + +/** + * @author abranson + * @version + */ +import java.awt.GridBagConstraints; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Iterator; + +import javax.swing.Box; +import javax.swing.JButton; +import javax.swing.JOptionPane; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.table.AbstractTableModel; + +import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.entity.agent.Job; +import com.c2kernel.entity.agent.JobList; +import com.c2kernel.entity.proxy.EntityProxyObserver; +import com.c2kernel.entity.proxy.MemberSubscription; +import com.c2kernel.gui.MainFrame; +import com.c2kernel.lifecycle.instance.stateMachine.Transitions; +import com.c2kernel.persistency.ClusterStorage; +import com.c2kernel.process.Gateway; +import com.c2kernel.property.Property; +import com.c2kernel.utils.Language; +import com.c2kernel.utils.Logger; + +/** + * Pane to display all work orders that this agent can execute, and activate + * them on request from the user. Subscribes to NodeItem for WorkOrder objects. + * @version $Revision: 1.4 $ $Date: 2004/10/21 08:02:21 $ + * @author $Author: abranson $ + */ +public class JobListPane extends EntityTabPane implements ActionListener, EntityProxyObserver { + + JobList joblist; + JoblistTableModel model; + JTable eventTable; + JButton startButton = new JButton("<<"); + JButton prevButton = new JButton("<"); + JButton nextButton = new JButton(">"); + JButton endButton = new JButton(">>"); + public static final int SIZE = 30; + int currentSize = SIZE; + + public JobListPane() { + super("Job List", "Agent Job List"); + initPanel(); + + // add buttons + Box navBox = Box.createHorizontalBox(); + navBox.add(startButton); navBox.add(prevButton); + navBox.add(nextButton); navBox.add(endButton); + + // setup buttons + //startButton.setEnabled(false); nextButton.setEnabled(false); + //prevButton.setEnabled(false); endButton.setEnabled(false); + startButton.setActionCommand("start"); + startButton.addActionListener(this); + prevButton.setActionCommand("prev"); + prevButton.addActionListener(this); + nextButton.setActionCommand("next"); + nextButton.addActionListener(this); + endButton.setActionCommand("end"); + endButton.addActionListener(this); + getGridBagConstraints(); + c.gridx = 0; c.gridy = 1; + c.anchor = GridBagConstraints.NORTHWEST; + c.fill=GridBagConstraints.NONE; + c.weightx=0; c.weighty=0; + gridbag.setConstraints(navBox, c); + add(navBox); + + + // Create table + eventTable = new JTable(); + JScrollPane eventScroll= new JScrollPane(eventTable); + c.weightx = 1.0; c.weighty = 1.0; + c.fill = GridBagConstraints.BOTH; c.gridy++; + gridbag.setConstraints(eventScroll, c); + add(eventScroll); + + // detect double clicked jobs + eventTable.addMouseListener(new JobListMouseListener()); + } + + @Override + public void reload() { + joblist.clear(); + jumpToEnd(); + } + + @Override + public void run() { + Thread.currentThread().setName("Joblist Pane Builder"); + try { + joblist = (JobList)sourceEntity.getEntity().getObject(ClusterStorage.JOB); + sourceEntity.getEntity().subscribe(new MemberSubscription(this, ClusterStorage.JOB, false)); + } catch (ObjectNotFoundException e) { + Logger.error(e); + } + model = new JoblistTableModel(joblist); + eventTable.setModel(model); + jumpToEnd(); + } + + + public void jumpToEnd() { + int lastEvent = joblist.getLastId(); + int firstEvent = 0; currentSize = SIZE; + if (lastEvent > currentSize) firstEvent = lastEvent - currentSize + 1; + if (lastEvent < currentSize) currentSize = lastEvent + 1; + Logger.msg(5, "JobListPane.run() - init table start "+firstEvent+" for "+currentSize); + model.setView(firstEvent, currentSize); + } + + @Override + public void add(Job contents) { + reload(); + } + + @Override + public void remove(String id) { + reload(); + } + + @Override + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("end")) { + jumpToEnd(); + return; + } + + int lastEvent = joblist.getLastId(); + int startEvent = model.getStartId(); + if (e.getActionCommand().equals("start")) { + currentSize = SIZE; + startEvent = 0; + } + + else if (e.getActionCommand().equals("prev")) { + currentSize = SIZE; + startEvent-=currentSize; + if (startEvent<0) startEvent = 0; + } + else if (e.getActionCommand().equals("next")) { + currentSize = SIZE; + startEvent+=currentSize; + if (startEvent > lastEvent) + startEvent = lastEvent - currentSize +1; + } + else { // unknown action + return; + } + + model.setView(startEvent, currentSize); + } + + private class JoblistTableModel extends AbstractTableModel { + Job[] job; + Integer[] ids; + String[] itemNames; + int loaded = 0; + int startId = 0; + + public JoblistTableModel(JobList joblist) { + job = new Job[0]; + ids = new Integer[0]; + } + + public int getStartId() { + return startId; + } + + public void setView(int startId, int size) { + job = new Job[size]; + ids = new Integer[size]; + itemNames = new String[size]; + this.startId = startId; + int count = 0; + for (Iterator i = joblist.keySet().iterator(); i.hasNext();) { + Integer thisJobId = new Integer((String)i.next()); + if (count >= startId) { + int idx = count-startId; + ids[idx] = thisJobId; + job[idx] = joblist.getJob(thisJobId.intValue()); + itemNames[idx] = "Item Not Found"; + try { + itemNames[idx] = ((Property)Gateway.getStorage().get(job[count-startId].getItemSysKey(), ClusterStorage.PROPERTY+"/Name", null)).getValue(); + } catch (Exception ex) { + Logger.error(ex); + } + + } + count++; + loaded = count-startId; + if (count > (startId + size)) break; + } + fireTableStructureChanged(); + } + /** + * @see javax.swing.table.TableModel#getColumnClass(int) + */ + @Override + public Class getColumnClass(int columnIndex) { + switch(columnIndex) { + case 0: + return Integer.class; + default: + return String.class; + } + } + + /** + * @see javax.swing.table.TableModel#getColumnCount() + */ + @Override + public int getColumnCount() { + return 4; + } + + /** + * @see javax.swing.table.TableModel#getColumnName(int) + */ + @Override + public String getColumnName(int columnIndex) { + switch(columnIndex) { + case 0: return Language.translate("ID"); + case 1: return Language.translate("Subject"); + case 2: return Language.translate("Activity"); + case 3: return Language.translate("Transition"); + default: return ""; + } + } + + /** + * @see javax.swing.table.TableModel#getRowCount() + */ + @Override + public int getRowCount() { + return loaded; + } + + /** + * @see javax.swing.table.TableModel#getValueAt(int, int) + */ + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + if (job.length <= rowIndex || job[rowIndex] == null) + return ""; + try { + switch (columnIndex) { + case 0: return ids[rowIndex]; + case 1: return itemNames[rowIndex]; + case 2: return job[rowIndex].getStepName(); + case 3: return Transitions.getTransitionName(job[rowIndex].getPossibleTransition()); + default: return ""; + } + } catch (Exception e) { + return null; + } + } + + /** + * @see javax.swing.table.TableModel#isCellEditable(int, int) + */ + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } + + public Job getJobAtRow(int rowIndex) { + return job[rowIndex]; + } + + } + + private class JobListMouseListener extends MouseAdapter { + + @Override + public void mouseClicked(MouseEvent e) { + super.mouseClicked(e); + if (e.getClickCount() == 2) { + Job selectedJob = model.getJobAtRow(eventTable.getSelectedRow()); + try { + MainFrame.itemFinder.pushNewKey(selectedJob.getItemProxy().getName()); + } catch (Exception ex) { + Logger.error(ex); + JOptionPane.showMessageDialog(null, "No Item Found", "Job references an unknown item", JOptionPane.ERROR_MESSAGE); + } + } + } + } + + @Override + public void control(String control, String msg) { + // TODO Auto-generated method stub + + } +} -- cgit v1.2.3