/******************************************************************************* * Copyright (c) 2005-2010, G. Weirich and Elexis * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * G. Weirich - initial implementation * N. Giger - Bypass Login Dialog for development environments * *******************************************************************************/ package ch.elexis.core.application.advisors; import java.util.List; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.ui.IPerspectiveRegistry; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.application.IWorkbenchConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchAdvisor; import org.eclipse.ui.application.WorkbenchWindowAdvisor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ch.elexis.core.constants.Preferences; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.data.extension.AbstractCoreOperationAdvisor; import ch.elexis.core.data.extension.CoreOperationExtensionPoint; import ch.elexis.core.ui.Hub; import ch.elexis.core.ui.UiDesk; import ch.elexis.core.ui.actions.GlobalActions; import ch.elexis.core.ui.constants.UiResourceConstants; import ch.elexis.data.Reminder; import ch.rgw.tools.ExHandler; /** * Dies ist eine Eclipse-spezifische Klasse Wichtigste Funktion ist das Festlegen der initialen * Perspektive In eventloopException können spezifische Verarbeitungen für nicht abgefangene * Exceptions definiert werden (Hier einfach Ausgabe). In eventLoopIdle können Arbeiten eingetragen * werden, die immer dann zu eredigen sind, wenn das Programm nichts weiter zu tun hat. */ public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor { private Logger log = LoggerFactory.getLogger(ApplicationWorkbenchAdvisor.class.getName()); protected static AbstractCoreOperationAdvisor cod = CoreOperationExtensionPoint .getCoreOperationAdvisor(); @Override public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor( final IWorkbenchWindowConfigurer configurer){ return new ApplicationWorkbenchWindowAdvisor(configurer); } /* * (non-Javadoc) * * @seeorg.eclipse.ui.application.WorkbenchAdvisor#initialize(org.eclipse.ui.application. * IWorkbenchConfigurer) */ @Override public void initialize(final IWorkbenchConfigurer configurer){ Hub.pin.initializeDisplayPreferences(UiDesk.getDisplay()); configurer.setSaveAndRestore(true); super.initialize(configurer); } @Override public IAdaptable getDefaultPageInput(){ return super.getDefaultPageInput(); } @Override public void postStartup(){ List<Reminder> reminderList = Reminder.findToShowOnStartup(CoreHub.actUser); if (reminderList.size() > 0) { StringBuilder sb = new StringBuilder(); for (Reminder reminder : reminderList) { sb.append(reminder.getKontakt().getLabel() + ", Id[" + reminder.getKontakt().getPatCode() + "]:\n"); sb.append(reminder.getMessage()).append("\n\n"); //$NON-NLS-1$ } MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getShell(), Messages.ReminderView_importantRemindersOnLogin, sb.toString()); } } @Override public String getInitialWindowPerspectiveId(){ String initPerspective = cod.getInitialPerspective(); // avoid that nothing opens up after login in case the stored perspective can't be found IPerspectiveRegistry perspectiveRegistry = PlatformUI.getWorkbench().getPerspectiveRegistry(); if (perspectiveRegistry.findPerspectiveWithId(initPerspective) == null) { initPerspective = UiResourceConstants.PatientPerspektive_ID; } return initPerspective; } @Override public void eventLoopException(final Throwable exception){ log.error(Messages.ApplicationWorkbenchAdvisor_10 + exception.getMessage()); exception.printStackTrace(); ExHandler.handle(exception); super.eventLoopException(exception); } @Override public boolean preShutdown(){ if (GlobalActions.fixLayoutAction != null) { GlobalActions.fixLayoutAction.setChecked(false); } return super.preShutdown(); } @Override public void postShutdown(){ Hub.postShutdown(); super.postShutdown(); } }