1 package org.opensync.engine.admin.gui;
2
3 import java.awt.CardLayout;
4 import java.util.Enumeration;
5 import java.util.Hashtable;
6 import java.util.Iterator;
7
8 import javax.swing.JDesktopPane;
9 import javax.swing.JInternalFrame;
10 import javax.swing.JPanel;
11 import javax.swing.JScrollPane;
12 import javax.swing.JSplitPane;
13
14 import org.opensync.engine.server.Agenda;
15 import org.opensync.engine.server.Agendas;
16 import org.opensync.engine.server.OpenSync;
17 import org.opensync.engine.server.Task;
18 import org.opensync.engine.server.TaskEvent;
19 import org.opensync.engine.server.TaskListener;
20 import org.opensync.engine.server.config.ConfigDoc;
21
22
23 /***
24 *
25 * @version 1.0
26 * @author SOFTMED
27 *
28 */
29
30 public class AppPnl extends JPanel implements TaskListener {
31 JDesktopPane desktop = new JDesktopPane();
32 JSplitPane splitPane = new JSplitPane();
33 CardLayout cardLayout = new CardLayout();
34 JScrollPane scrollPane = new JScrollPane();
35 OpenSyncTree tree;
36 LogIFrm logIFrm;
37 Hashtable frames = new Hashtable();
38 private OpenSync openSync;
39
40 /****/
41 protected static AppPnl appPnl;
42 /***
43 * @param openSync
44 */
45 public AppPnl(OpenSync openSync) {
46 appPnl = this;
47 tree = new OpenSyncTree(this);
48 this.openSync = openSync;
49 logIFrm = new LogIFrm(openSync.getLog(),
50 openSync.getProperties().getGuiLogRollWindow()
51 );
52 jbInit();
53 splitPane.setDividerLocation(150);
54 }
55 /****/
56 static public AppPnl getInstance() {
57 return appPnl;
58 }
59
60 private void jbInit(){
61 setLayout(cardLayout);
62 add(splitPane, "splitPane");
63 splitPane.add(scrollPane, JSplitPane.LEFT);
64 scrollPane.getViewport().add(tree, null);
65 splitPane.add(desktop, JSplitPane.RIGHT);
66
67 showLogFrame();
68 }
69 /****/
70 public void showLogFrame(){
71 if(!logIFrm.isVisible()){
72 synchronized(desktop){
73 desktop.add(logIFrm);
74 logIFrm.setVisible(true);
75 try {
76 logIFrm.setSelected(true);
77 }
78 catch (Exception ex) {
79 ex.printStackTrace();
80 }
81 }
82 }
83 }
84 /****/
85 public LogIFrm getLogIfrm(){
86 return logIFrm;
87 }
88 /***
89 * @param frm
90 */
91 public void addIFrame(JInternalFrame frm){
92 synchronized(desktop){
93 desktop.add(frm);
94 try {
95 frm.setVisible(true);
96 frm.setSelected(true);
97 }
98 catch (Exception ex) {
99 ex.printStackTrace();
100 }
101 }
102 }
103 /***
104 * @param doc
105 */
106 public void process(ConfigDoc doc){
107 process(doc.getAgendas());
108 tree.createNode(doc.getSynchronizations());
109 tree.createNode(doc.getSources());
110 tree.createNode(doc.getAgendas());
111 }
112 /***
113 * @param agendas
114 */
115 public void process(Agendas agendas) {
116 Enumeration enumeration = agendas.elements();
117 while(enumeration.hasMoreElements()){
118 Agenda agenda = (Agenda)enumeration.nextElement();
119 process(agenda);
120 }
121 }
122 /***
123 * @param agenda
124 */
125 protected void process(Agenda agenda){
126 Iterator iterator = agenda.getTasks().iterator();
127 while(iterator.hasNext()){
128 process((Task)iterator.next());
129 }
130 }
131 /***
132 * @param task ?agenda?
133 */
134 protected void process(Task task){
135 task.addTaskListener(this);
136 Iterator iterator = task.getSubTasks().iterator();
137 while(iterator.hasNext()){
138 process((Task)iterator.next());
139 }
140 }
141 /***
142 * @param event
143 */
144 public void taskStart(TaskEvent event) {
145 try {
146 Task task = event.getTask();
147 TaskIFrm frm = new TaskIFrm(task,openSync.getLog());
148 synchronized(frames){
149 frames.put(task.getName(),frm);
150 }
151 addIFrame(frm);
152 }
153 catch (Exception ex) {
154 ex.printStackTrace();
155
156 }
157 }
158 /***
159 * @param event
160 */
161 public void taskStop(TaskEvent event) {
162 try {
163 if(openSync.getProperties().isGuiTaskCloseWhenFinished()){
164 Task task = event.getTask();
165 JInternalFrame frm = (JInternalFrame)frames.remove(task.getName());
166 if(frm != null){
167 frm.dispose();
168 desktop.remove(frm);
169 }
170 }
171 }
172 catch (Exception ex) {
173 ex.printStackTrace();
174
175 }
176 }
177 /***
178 * @param event
179 */
180 public void taskFail(TaskEvent event) {
181 }
182 }
183
184
185