1 package com.nightlabs.ipanema.base.app; 2 3 import java.io.File ; 4 5 import javax.security.auth.login.LoginException ; 6 7 import org.apache.log4j.Logger; 8 import org.eclipse.jface.util.Assert; 9 import org.eclipse.swt.widgets.Display; 10 import org.eclipse.ui.IWorkbenchWindow; 11 import org.eclipse.ui.application.IActionBarConfigurer; 12 import org.eclipse.ui.application.IWorkbenchConfigurer; 13 import org.eclipse.ui.application.IWorkbenchWindowConfigurer; 14 import org.eclipse.ui.application.WorkbenchAdvisor; 15 16 import com.nightlabs.classsharing.ClasssharingPlugin; 17 import com.nightlabs.config.ConfigException; 18 import com.nightlabs.ipanema.base.login.IpanemaLoginHandler; 19 import com.nightlabs.ipanema.base.login.IpanemaSecurityConfiguration; 20 import com.nightlabs.ipanema.base.login.Login; 21 import com.nightlabs.ipanema.base.login.WorkOfflineException; 22 import com.nightlabs.ipanema.base.perspective.IpanemaWelcomePerspective; 23 import com.nightlabs.ipanema.boot.DelegatingClassLoader; 24 import com.nightlabs.ipanema.classloader.IpanemaCLDelegate; 25 import com.nightlabs.rcp.exceptionhandler.ExceptionHandlerRegistry; 26 import com.nightlabs.rcp.splash.SplashHandlingWorkbenchAdvisor; 27 28 33 public class IpanemaWorkbenchAdvisor 34 extends SplashHandlingWorkbenchAdvisor 35 { 36 39 private static final String BUILDER_KEY = "builder"; public static Logger LOGGER = null; 41 42 51 public IpanemaWorkbenchAdvisor(Display display) { 52 super(); 53 try { 54 if (isSystemClassLoaderDelegating()){ 55 System.out.println("Initializing classsharing ..."); 56 ClasssharingPlugin.initializeClassSharing(); 57 System.out.println("Initializing classsharing ... DONE"); 58 } 60 61 IpanemaApplication.initializeLogging(); 62 63 IpanemaWorkbenchAdvisor.LOGGER = Logger.getLogger(IpanemaWorkbenchAdvisor.class); 64 65 initConfig(); 66 } catch (Exception e) { 67 throw new RuntimeException (e); 68 } 69 } 70 71 protected void initConfig() throws ConfigException, LoginException , WorkOfflineException 72 { 73 com.nightlabs.config.Config config = com.nightlabs.config.Config.createSharedInstance("config.xml", true, IpanemaApplication.getConfigDir()); 75 76 IpanemaApplication.getLogDir(); 78 IpanemaCLDelegate.createSharedInstance(Login.getLogin(false), new File (IpanemaApplication.getRootDir(), "classloader.cache")); 79 80 initializeLoginModule(); 81 } 82 83 84 85 public static boolean isSystemClassLoaderDelegating() { 86 return ClassLoader.getSystemClassLoader() instanceof DelegatingClassLoader; 87 } 88 89 92 public void initialize(IWorkbenchConfigurer configurer) { 93 super.initialize(configurer); 94 configurer.setSaveAndRestore(true); 95 } 96 97 129 133 public String getInitialWindowPerspectiveId() 134 { 135 return IpanemaWelcomePerspective.ID_PERSPECTIVE; 136 } 137 138 139 private boolean firstWindowToShow = true; 140 143 public void preWindowOpen(IWorkbenchWindowConfigurer configurer) 144 { 145 super.preWindowOpen(configurer); 146 147 configurer.setShowPerspectiveBar(true); 148 configurer.setShowMenuBar(true); 149 configurer.setShowCoolBar(true); 150 151 } 152 153 154 155 public void postWindowOpen(IWorkbenchWindowConfigurer configurer) { 156 super.postWindowOpen(configurer); 157 } 165 166 167 171 public void fillActionBars(IWorkbenchWindow window, IActionBarConfigurer configurer, int flags) { 172 super.fillActionBars(window,configurer,flags); 174 Assert.isTrue((flags & WorkbenchAdvisor.FILL_PROXY) == 0); 175 IpanemaActionBuilder builder = new IpanemaActionBuilder(window); 176 getWorkbenchConfigurer().getWindowConfigurer(window).setData(BUILDER_KEY, builder); 177 builder.fillActionBars(configurer, flags); 178 } 179 180 183 public void postWindowClose(IWorkbenchWindowConfigurer configurer) { 184 super.postWindowClose(configurer); 185 IpanemaActionBuilder builder = (IpanemaActionBuilder) configurer.getData(BUILDER_KEY); 186 if (builder != null) { 187 builder.dispose(); 188 } 189 } 190 191 192 193 public boolean preShutdown() { 194 try { 195 com.nightlabs.config.Config.sharedInstance().saveConfFile(); 196 } catch (ConfigException e) { 197 LOGGER.error("Saving config failed!", e); 198 } 199 return super.preShutdown(); 200 } 201 202 public void preStartup() { 203 super.preStartup(); 204 } 206 207 protected void initializeLoginModule(){ 208 LOGGER.debug("#initializeLoginModule: Declaring Configuration"); 209 IpanemaSecurityConfiguration.declareConfiguration(); 210 211 LOGGER.debug("#initializeLoginModule: Setting LoginHandler"); 212 try { 213 Login.getLogin(false).setLoginHandler(new IpanemaLoginHandler()); 214 } catch (LoginException e) { 215 throw new RuntimeException ("How the hell could this happen?!", e); 216 } 217 } 218 219 public void eventLoopException(Throwable exception) { 220 if (!ExceptionHandlerRegistry.syncHandleException(exception)) 221 super.eventLoopException(exception); 222 } 223 224 229 230 231 } 232 | Popular Tags |