blob: 818cc14e1bacfdcbdb286ea198bec8d13b7cc603 [file] [log] [blame]
package @@BUNDLE_SWT_NAME@@;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.eclipse.scout.rt.client.AbstractClientSession;
import org.eclipse.scout.rt.client.ui.desktop.IDesktop;
import org.eclipse.scout.rt.client.ui.form.IForm;
import org.eclipse.scout.rt.ui.swt.AbstractSwtEnvironment;
import org.eclipse.scout.rt.ui.swt.ISwtEnvironmentListener;
import org.eclipse.scout.rt.ui.swt.SwtEnvironmentEvent;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.osgi.framework.Bundle;
import @@BUNDLE_SWT_NAME@@.application.ApplicationActionBarAdvisor;
import @@BUNDLE_SWT_NAME@@.editor.ScoutEditorPart;
import @@BUNDLE_SWT_NAME@@.views.CenterView;
import @@BUNDLE_SWT_NAME@@.views.EastView;
import @@BUNDLE_SWT_NAME@@.views.NorthEastView;
import @@BUNDLE_SWT_NAME@@.views.NorthWestView;
import @@BUNDLE_SWT_NAME@@.views.SouthWestView;
import @@BUNDLE_SWT_NAME@@.views.SouthView;
import @@BUNDLE_SWT_NAME@@.views.WestView;
import @@BUNDLE_SWT_NAME@@.views.SouthEastView;
public class SwtEnvironment extends AbstractSwtEnvironment{
private ApplicationActionBarAdvisor m_advisor;
public SwtEnvironment(Bundle bundle,String perspectiveId,Class<? extends AbstractClientSession> clientSessionClazz) {
super(bundle, perspectiveId, clientSessionClazz);
registerPart(IForm.VIEW_ID_OUTLINE, NorthWestView.class.getName());
registerPart(IForm.VIEW_ID_OUTLINE_SELECTOR, SouthWestView.class.getName());
registerPart(IForm.VIEW_ID_CENTER, CenterView.class.getName());
registerPart(IForm.VIEW_ID_PAGE_TABLE, CenterView.class.getName());
registerPart(IForm.VIEW_ID_PAGE_DETAIL, NorthView.class.getName());
registerPart(IForm.VIEW_ID_PAGE_SEARCH, SouthView.class.getName());
registerPart(IForm.VIEW_ID_N, NorthView.class.getName());
registerPart(IForm.VIEW_ID_NW, NorthWestView.class.getName());
registerPart(IForm.VIEW_ID_W, WestView.class.getName());
registerPart(IForm.VIEW_ID_SW, SouthWestView.class.getName());
registerPart(IForm.VIEW_ID_S, SouthView.class.getName());
registerPart(IForm.VIEW_ID_SE, SouthEastView.class.getName());
registerPart(IForm.VIEW_ID_E, EastView.class.getName());
registerPart(IForm.VIEW_ID_NE, NorthEastView.class.getName());
registerPart(IForm.EDITOR_ID, ScoutEditorPart.class.getName());
addEnvironmentListener(new ISwtEnvironmentListener() {
@Override
public void environmentChanged(SwtEnvironmentEvent e) {
if (e.getType() == SwtEnvironmentEvent.STOPPED) {
if (!PlatformUI.getWorkbench().isClosing()) {
PlatformUI.getWorkbench().close();
}
}
}
});
addEnvironmentListener(new ISwtEnvironmentListener() {
@Override
public void environmentChanged(SwtEnvironmentEvent e) {
if (e.getType() == SwtEnvironmentEvent.STARTED) {
removeEnvironmentListener(this);
IDesktop d = getClientSession().getDesktop();
if (d != null) {
setWindowTitle(d.getTitle());
d.addPropertyChangeListener(IDesktop.PROP_TITLE, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
setWindowTitle((String) evt.getNewValue());
}
});
if (m_advisor != null) {
m_advisor.initViewButtons(d);
}
}
}
}
});
}
public void setAdvisor(ApplicationActionBarAdvisor advisor) {
m_advisor = advisor;
}
private void setWindowTitle(final String title) {
for (IWorkbenchWindow w : PlatformUI.getWorkbench().getWorkbenchWindows()) {
final Shell s = w.getShell();
if (!s.isDisposed()) {
s.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
s.setText(title);
}
});
}
}
}
}