View Javadoc

1   /*
2    * Copyright (c) 2005, The K-Wf Grid Consortium
3    * Fraunhofer Institute for Computer Architecture and Software Technology
4    * See http://www.kwfgrid.eu and http://www.first.fraunhofer.de for more details.
5    */
6   package net.kwfgrid.gwui.applet;
7   
8   import net.kwfgrid.gwui.graphview.*;
9   import net.kwfgrid.gwui.*;
10  import net.kwfgrid.gwui.workflow.*;
11  import net.kwfgrid.gwui.taskframework.*;
12  import net.kwfgrid.gworkflowdl.structure.*;
13  
14  import org.glassbox.graphview.*;
15  import org.glassbox.gui.*;
16  import org.glassbox.SwingThread;
17  import org.glassbox.SwingFactory;
18  import org.glassbox.Theme;
19  import org.glassbox.executor.Executor;
20  
21  import de.fzi.wim.guibase.graphview.graph.*;
22  import de.fzi.wim.guibase.graphview.lens.*;
23  
24  import org.jdom.*;
25  import org.jdom.input.*;
26  
27  import javax.swing.*;
28  import java.io.*;
29  import java.net.URL;
30  import java.awt.*;
31  import java.awt.event.MouseEvent;
32  import java.util.*;
33  
34  import org.apache.log4j.Logger;
35  
36  /***
37     The TaskList Applet.
38   */
39  public class TaskListApplet extends JApplet implements Browser, WorkflowApplet {
40      public static final String IDENTIFIER = "kwfgrid.TaskListApplet";
41  
42      private static final Logger logger = Logger.getLogger(TaskListApplet.class);
43  
44      private WorkflowAppletGroup _gui;
45      private JLayeredGroup _group;
46  
47      public TaskListApplet() {
48  	logger.debug("TaskListApplet instantiated.");
49   	_gui = null;
50  	_group = null;
51      }
52  
53      public void init() {
54  	// set the global properties.
55  	GWUI.getInstance().setProperty(GWUI.GWES_URI_KEY, getParameter(GWUI.GWES_URI_KEY));
56  	GWUI.getInstance().setProperty(GWUI.USER_ID_KEY, getParameter(GWUI.USER_ID_KEY));
57  	GWUI.getInstance().setProperty(GWUI.UAA_FRAME_KEY, getParameter(GWUI.UAA_FRAME_KEY));
58  	GWUI.getInstance().setProperty(GWUI.UAA_PORTLET_URL_KEY, getParameter(GWUI.UAA_PORTLET_URL_KEY));
59  	GWUI.getInstance().setProperty(GWUI.FORM_SELECTION_SERVLET_URL_KEY, getParameter(GWUI.FORM_SELECTION_SERVLET_URL_KEY));
60  	GWUI.getInstance().setProperty(GWUI.XSD_PATH, getParameter(GWUI.XSD_PATH));
61          if (getParameter(GWUI.XSD_PATH) != null) System.setProperty(GWUI.XSD_PATH, getParameter(GWUI.XSD_PATH));
62  	
63  	// Build the GUI.
64  	_gui = WorkflowAppletGroup.getInstance(this);
65  	//_gui.getExecutor(this).execute(new Runnable() {
66  	SwingThread.invokeLater(new Runnable() {
67  		public void run() {
68  		    doInit();
69  		}
70  	    });
71      }
72  
73      private void doInit() {
74  	_group = new JLayeredGroup() {
75  		public String getIdentifier() {
76  		    return TaskListApplet.this.IDENTIFIER;
77  		}
78  	    };
79  	_gui.addMember(_group);
80  	
81  	Executor executor = _gui.getExecutor(this);
82  	WorkflowStatusMonitor monitor = new WorkflowStatusMonitor();
83  	UAA uaa = new UAA(this);
84  	
85  	UserTaskList tasklist = new UserTaskList();
86  	InputTaskProducer4WCTRefinementFailed wctinputproducer = new InputTaskProducer4WCTRefinementFailed(executor, uaa, this);
87  	InputTaskProducer4Decision decisionproducer = new InputTaskProducer4Decision(executor, uaa, this);
88  	tasklist.addUserTaskProducer(wctinputproducer);
89  	tasklist.addUserTaskProducer(decisionproducer);
90  	
91  	LayoutLayer bottompane = new LayoutLayer(new BorderLayout(),
92  						 "kwfgrid.GWUI.transparent-pane",
93  						 false);								  
94  	
95  	_group.addLayer(10, bottompane);
96  	_group.addMember(tasklist, 10, BorderLayout.CENTER);
97  	
98  	_group.addMember(monitor);
99  	
100 	_group.setProperty(VisibleGroup.VIEWPORT_SIZE_KEY, getContentPane().getSize());
101 	
102 	getContentPane().setLayout(new BorderLayout());	
103 	getContentPane().add(_group.getView(), BorderLayout.CENTER);
104 	getContentPane().validate();
105 	getContentPane().repaint();
106 	
107 	// Applet is initiated.
108 	_gui.getExecutor(this).execute(new Runnable() {
109 		public void run() {
110 		    _gui.setAppletStatus(TaskListApplet.this, Group.RUNNING);
111 		    _group.setProperty(Group.APPLICATION_STATUS_KEY, Group.RUNNING);
112 		}
113 	    });
114 	// Set th workflow ID.
115 	setWorkflowID(getParameter(GWUI.WORKFLOW_ID_KEY));
116     }
117 				
118 
119     public void destroy() {
120 	_gui.setAppletStatus(TaskListApplet.this, Group.EXITING);
121 	_group.setProperty(Group.APPLICATION_STATUS_KEY, Group.EXITING);
122     }
123 
124     public void showDocument(URL url) {
125 	getAppletContext().showDocument(url);
126     }
127 
128     public void showDocument(URL url, String target) {
129 	getAppletContext().showDocument(url, target);
130     }
131 
132     public void setWorkflowID(final String workflowid) {
133 	_gui.getExecutor(this).execute(new Runnable() {
134 		public void run() {
135 		    logger.debug("Setting workflow ID "+ workflowid);
136 		    _gui.setWorkflowID("".equals(workflowid) ? null : workflowid);
137 		}
138 	    });
139     }
140 }