package org.reldb.dbrowser.ui;
import java.util.Vector;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.reldb.dbrowser.ui.preferences.PreferenceChangeAdapter;
import org.reldb.dbrowser.ui.preferences.PreferenceChangeEvent;
import org.reldb.dbrowser.ui.preferences.PreferenceChangeListener;
import org.reldb.dbrowser.ui.preferences.PreferencePageGeneral;
import org.reldb.dbrowser.ui.preferences.Preferences;
public class ManagedToolbar {
private PreferenceChangeListener preferenceChangeListener;
private ToolBar toolBar;
private static class ToolbarItem {
private ToolItem toolItem;
private String iconName;
public ToolbarItem(ToolItem toolItem, String iconName) {
this.toolItem = toolItem;
this.iconName = iconName;
}
ToolItem getToolItem() {return toolItem;}
String getIconName() {return iconName;}
}
private Vector<ToolbarItem> toolbarItems = new Vector<ToolbarItem>();
public ToolItem addItem(String toolTip, String iconName, int style) {
ToolItem item = new ToolItem(toolBar, style);
item.setToolTipText(toolTip);
item.setImage(IconLoader.loadIcon(iconName));
ToolbarItem toolbarItem = new ToolbarItem(item, iconName);
toolbarItems.add(toolbarItem);
return item;
}
public void addSeparator() {
new ToolItem(toolBar, SWT.SEPARATOR);
}
public void addSeparatorFill() {
new ToolItem(toolBar, SWT.SEPARATOR);
}
public ManagedToolbar(Composite parent) {
toolBar = new ToolBar(parent, SWT.None);
preferenceChangeListener = new PreferenceChangeAdapter("ManagedToolbar") {
@Override
public void preferenceChange(PreferenceChangeEvent evt) {
setupIcons();
}
};
Preferences.addPreferenceChangeListener(PreferencePageGeneral.LARGE_ICONS, preferenceChangeListener);
}
public void dispose() {
Preferences.removePreferenceChangeListener(PreferencePageGeneral.LARGE_ICONS, preferenceChangeListener);
toolBar.dispose();
}
private void setupIcons() {
for (ToolbarItem tbi: toolbarItems)
tbi.getToolItem().setImage(IconLoader.loadIcon(tbi.getIconName()));
}
public ToolBar getToolBar() {
return toolBar;
}
}