KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > base > app > IpanemaApplicationThread


1 /*
2  * Created on Nov 12, 2004
3  * by Alexander Bieber
4  *
5  */

6 package com.nightlabs.ipanema.base.app;
7
8 import javax.security.auth.login.LoginException JavaDoc;
9
10 import org.eclipse.swt.widgets.Display;
11 import org.eclipse.ui.PlatformUI;
12 import org.eclipse.ui.application.WorkbenchAdvisor;
13
14 import com.nightlabs.ipanema.base.login.Login;
15 import com.nightlabs.ipanema.base.login.LoginConfigModule;
16 import com.nightlabs.ipanema.update.StartupUpdateManager;
17
18 /**
19  * @author Alexander Bieber
20  */

21 public class IpanemaApplicationThread extends Thread JavaDoc
22 {
23
24     public static final String JavaDoc DEFAULT_NAME = "IpanemaApplicationThread";
25
26     public IpanemaApplicationThread()
27     {
28         this(DEFAULT_NAME);
29     }
30
31     /**
32      * @param target
33      */

34     public IpanemaApplicationThread(Runnable JavaDoc target) {
35         super(target);
36     }
37
38     /**
39      * @param name
40      */

41     public IpanemaApplicationThread(String JavaDoc name) {
42         super(name);
43     }
44
45     /**
46      * @param group
47      * @param target
48      */

49     public IpanemaApplicationThread(ThreadGroup JavaDoc group, Runnable JavaDoc target) {
50         super(group, target);
51     }
52
53     /**
54      * @param target
55      * @param name
56      */

57     public IpanemaApplicationThread(Runnable JavaDoc target, String JavaDoc name) {
58         super(target, name);
59     }
60     
61     public IpanemaApplicationThread(ThreadGroup JavaDoc group) {
62         super(group, DEFAULT_NAME);
63     }
64
65     /**
66      * @param group
67      * @param name
68      */

69     public IpanemaApplicationThread(ThreadGroup JavaDoc group, String JavaDoc name) {
70         super(group, name);
71     }
72
73     /**
74      * @param group
75      * @param target
76      * @param name
77      */

78     public IpanemaApplicationThread(ThreadGroup JavaDoc group, Runnable JavaDoc target,
79             String JavaDoc name) {
80         super(group, target, name);
81     }
82
83     /**
84      * @param group
85      * @param target
86      * @param name
87      * @param stackSize
88      */

89     public IpanemaApplicationThread(ThreadGroup JavaDoc group, Runnable JavaDoc target,
90             String JavaDoc name, long stackSize) {
91         super(group, target, name, stackSize);
92     }
93     
94     private IpanemaApplication application;
95     void setIpanemaApplication(IpanemaApplication app) {
96         this.application = app;
97     }
98     
99     
100     private int platformResultCode = -1;
101   protected Display display;
102     
103     public int getPlatformResultCode() {
104         return platformResultCode;
105     }
106     
107     public void run() {
108         try {
109             // create the display
110
display = PlatformUI.createDisplay();
111
112             WorkbenchAdvisor workbenchAdvisor = new IpanemaWorkbenchAdvisor(display);
113             
114       try
115       {
116         LoginConfigModule lcm = Login.getLogin().getLoginConfigModule();
117         if(lcm.getAutomaticUpdate() == true)
118         {
119           StartupUpdateManager updateManager = new StartupUpdateManager(lcm);
120           updateManager.run();
121           if(updateManager.doRestart())
122           {
123             platformResultCode = PlatformUI.RETURN_RESTART;
124             return;
125           }
126         }
127       }
128       catch(LoginException JavaDoc e)
129       {
130       }
131       
132
133       int returnCode = PlatformUI.createAndRunWorkbench(display, workbenchAdvisor);
134         }
135         finally {
136             synchronized(IpanemaApplication.getMutex()) {
137                 IpanemaApplication.getMutex().notifyAll();
138             }
139         }
140     }
141 }
142
Popular Tags