/**
* Miroslav Popov, Mar 14, 2006 miroslav.popov@gmail.com
*/
package org.enhydra.shark.swingclient;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Window;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import org.enhydra.shark.api.client.wfmc.wapi.WMActivityInstance;
import org.enhydra.shark.api.client.wfmc.wapi.WMActivityInstanceIterator;
import org.enhydra.shark.api.client.wfmc.wapi.WMIterator;
import org.enhydra.shark.api.client.wfmc.wapi.WMProcessInstance;
import org.enhydra.shark.api.client.wfmc.wapi.WMProcessInstanceIterator;
import org.enhydra.shark.api.client.wfservice.WMEntity;
import org.enhydra.shark.api.client.wfservice.WMEntityIterator;
/**
* @author Miroslav Popov
*/
public class ResultPanel extends ActionPanel {
private static Dimension spDimension = new Dimension(700, 400);
String _text;
WMProcessInstanceIterator _pii;
WMActivityInstanceIterator _aii;
WMEntityIterator _ei;
String[] _info;
public ResultPanel(Window parent,
String header,
String text,
WMProcessInstanceIterator pii,
WMActivityInstanceIterator aii,
WMEntityIterator ei,
String[] info) {
super();
_text = text;
_pii = pii;
_aii = aii;
_ei = ei;
_info = info;
super.init();
super.initDialog(parent, header, true, false);
}
protected void createActions() {
}
protected Component createCenterComponent() {
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JLabel desc = new JLabel(_text);
desc.setAlignmentX(LEFT_ALIGNMENT);
panel.add(desc);
int pcount = 0;
int acount = 0;
int ecount = 0;
int icount = 0;
if (_pii != null)
pcount = _pii.getCount();
if (_aii != null)
acount = _aii.getCount();
if (_ei != null)
ecount = _ei.getCount();
if (_info != null)
icount = _info.length;
if (pcount == 0 && acount == 0 && ecount==0 && icount == 0) {
JLabel text = new JLabel(ResourceManager.getLanguageDependentString("MessageActionResultsEmpty"));
panel.add(text);
} else {
if (pcount != 0) {
JLabel text = new JLabel(ResourceManager.getLanguageDependentString("MessageNumberOfProcesses")
+ " : " + pcount);
text.setAlignmentX(LEFT_ALIGNMENT);
JList list = new JList(iToString(_pii));
JScrollPane pane = new JScrollPane();
pane.setAlignmentX(LEFT_ALIGNMENT);
pane.setViewportView(list);
// pane.setMinimumSize(new Dimension(spDimension));
pane.setPreferredSize(new Dimension(spDimension));
// pane.setMaximumSize(new Dimension(spDimension));
panel.add(text);
panel.add(Box.createRigidArea(new Dimension(0, 5)));
panel.add(pane);
}
if (acount != 0) {
JLabel text = new JLabel(ResourceManager.getLanguageDependentString("MessageNumberOfActivities")
+ " : " + acount);
text.setAlignmentX(LEFT_ALIGNMENT);
JList list = new JList(iToString(_aii));
JScrollPane pane = new JScrollPane();
pane.setAlignmentX(LEFT_ALIGNMENT);
pane.setViewportView(list);
pane.setMinimumSize(new Dimension(spDimension));
pane.setPreferredSize(new Dimension(spDimension));
pane.setMaximumSize(new Dimension(spDimension));
panel.add(text);
panel.add(pane);
}
if (ecount != 0) {
JLabel text = new JLabel(ResourceManager.getLanguageDependentString("MessageNumberOfEntities")
+ " : " + acount);
text.setAlignmentX(LEFT_ALIGNMENT);
JList list = new JList(iToString(_ei));
JScrollPane pane = new JScrollPane();
pane.setAlignmentX(LEFT_ALIGNMENT);
pane.setViewportView(list);
pane.setMinimumSize(new Dimension(spDimension));
pane.setPreferredSize(new Dimension(spDimension));
pane.setMaximumSize(new Dimension(spDimension));
panel.add(text);
panel.add(pane);
}
if (icount != 0) {
JLabel text = new JLabel(ResourceManager.getLanguageDependentString("MessageNumberOfOptions")
+ " : " + icount);
text.setAlignmentX(LEFT_ALIGNMENT);
JList list = new JList(_info);
JScrollPane pane = new JScrollPane();
pane.setAlignmentX(LEFT_ALIGNMENT);
pane.setViewportView(list);
pane.setMinimumSize(new Dimension(spDimension));
pane.setPreferredSize(new Dimension(spDimension));
pane.setMaximumSize(new Dimension(spDimension));
panel.add(text);
panel.add(pane);
}
}
return panel;
}
protected void applyChanges() {
myDialog.setVisible(false);
}
protected String[] iToString(WMIterator iter) {
String[] retVal = new String[iter.getCount()];
if (iter instanceof WMProcessInstanceIterator) {
WMProcessInstanceIterator pi = (WMProcessInstanceIterator) iter;
int count = 0;
while (pi.hasNext()) {
String text = "";
WMProcessInstance i = (WMProcessInstance) pi.next();
text += "\n";
text += "ID: "
+ i.getId() + " State: " + i.getState().stringValue() + " Priority: "
+ i.getPriority() + " ";
if (i.getName() != null)
text += ", Name: " + i.getName() + " ";
text += ", Process definition: " + i.getProcessDefinitionId();
retVal[count++] = text;
}
} else if (iter instanceof WMActivityInstanceIterator) {
WMActivityInstanceIterator ai = (WMActivityInstanceIterator) iter;
int count = 0;
while (ai.hasNext()) {
String text = "";
WMActivityInstance i = (WMActivityInstance) ai.next();
text += "\n";
text += "ID: "
+ i.getId() + ", State: " + i.getState().stringValue()
+ " Priority: " + i.getPriority() + " ";
if (i.getName() != null)
text += ", Name: " + i.getName() + " ";
if (i.getState() != null)
text += ", State: " + i.getState().get_state();
text += ", Activity definition: " + i.getActivityDefinitionId();
text += ", Process instance: " + i.getProcessInstanceId();
retVal[count++] = text;
}
} else if (iter instanceof WMEntityIterator) {
WMEntityIterator ei = (WMEntityIterator) iter;
int count = 0;
while (ei.hasNext()) {
String text = "";
WMEntity i = (WMEntity) ei.next();
text += "\n";
text += "ID: "
+ i.getId() + ", Parent Id: " + i.getParentId()+" ";
if (i.getName() != null)
text += ", Name: " + i.getName() + " ";
retVal[count++] = text;
}
}
return retVal;
}
}
|