package com.hilotec.elexis.toolbar;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IPerspectiveRegistry;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.WorkbenchException;
import ch.elexis.core.data.activator.CoreHub;
import org.eclipse.swt.graphics.Image;
public class PerspektivenContribution extends ContributionItem {
@Override
public void fill(ToolBar parent, int index) {
IPerspectiveRegistry pr = PlatformUI.getWorkbench().
getPerspectiveRegistry();
String cfg = CoreHub.localCfg.get(Preferences.CFG_PERSPEKTIVEN, "");
String[] ids = cfg.split(",");
if (cfg == "") return;
for (String id: ids) {
IPerspectiveDescriptor pd = pr.findPerspectiveWithId(id);
if (pd == null) continue;
ToolItem ti = new ToolItem(parent, SWT.PUSH);
ImageDescriptor idesc = pd.getImageDescriptor();
Image im = (idesc != null ? idesc.createImage() : null);
if (im != null)
ti.setImage(im);
else
ti.setText(pd.getLabel());
ti.setToolTipText(pd.getLabel());
ti.addSelectionListener(new TISelListener(pd.getId()));
}
parent.update();
}
public boolean isDynamic() {
return true;
}
private class TISelListener implements SelectionListener {
private String id;
public TISelListener(String pid) {
id = pid;
}
public void widgetDefaultSelected(SelectionEvent e) {}
public void widgetSelected(SelectionEvent e) {
IWorkbench wb = PlatformUI.getWorkbench();
try {
wb.showPerspective(id, wb.getActiveWorkbenchWindow());
} catch (WorkbenchException e1) { }
}
}
}