1 6 package com.nightlabs.ipanema.base.login.actions; 7 8 import javax.security.auth.login.LoginException ; 9 10 import org.apache.log4j.Logger; 11 import org.eclipse.jface.action.IAction; 12 import org.eclipse.jface.resource.ImageDescriptor; 13 import org.eclipse.ui.IWorkbenchWindow; 14 15 import com.nightlabs.ipanema.base.IpanemaBasePlugin; 16 import com.nightlabs.ipanema.base.login.Login; 17 18 21 public class LoginAction extends LSDWorkbenchWindowActionDelegate { 22 private static final Logger LOGGER = Logger.getLogger(LoginAction.class); 23 24 private static ImageDescriptor loginIcon = null; 25 private static ImageDescriptor logoutIcon = null; 26 29 public void init(IWorkbenchWindow window) { 30 super.init(window); 31 if (loginIcon == null) { 32 loginIcon = ImageDescriptor.createFromURL(IpanemaBasePlugin.getDefault().getBundle().getEntry(IpanemaBasePlugin.getResourceString("actions.login.icons.login"))); 33 } 34 if (logoutIcon == null) { 35 logoutIcon = ImageDescriptor.createFromURL(IpanemaBasePlugin.getDefault().getBundle().getEntry(IpanemaBasePlugin.getResourceString("actions.login.icons.logout"))); 36 } 37 } 38 39 40 43 public void run(IAction action) { 44 try { 45 Login login = Login.getLogin(false); 46 if (login.isLoggedIn()) 47 login.logout(); 48 else 49 Login.getLogin(); 50 51 } catch (LoginException e) { 52 LOGGER.error("Login failed",e); 53 } 54 } 55 56 public void loginStateChanged(int loginState, IAction action) { 57 switch (loginState) { 58 case Login.LOGINSTATE_LOGGED_IN: 59 action.setImageDescriptor(logoutIcon); 60 action.setToolTipText(IpanemaBasePlugin.getResourceString("actions.login.tooltip.logout")); 61 break; 62 case Login.LOGINSTATE_LOGGED_OUT: 63 action.setImageDescriptor(loginIcon); 64 action.setToolTipText("You are working offline, click to login"); 65 break; 66 case Login.LOGINSTATE_OFFLINE: 67 action.setImageDescriptor(loginIcon); 68 action.setToolTipText(IpanemaBasePlugin.getResourceString("actions.login.tooltip.login")); 69 break; 70 } 71 } 72 } 73 | Popular Tags |