package org.reldb.dbrowser.ui.content.rel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.reldb.dbrowser.ui.DbTab;
import org.reldb.dbrowser.ui.IconLoader;
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 DbTabContentRel extends Composite {
private ToolItem tlitmBackup;
private ToolItem tlitmShow;
private ToolItem tlitmNew;
private ToolItem tlitmDrop;
private ToolItem tlitmDesign;
private ToolItem tlitmRename;
private ToolItem tlitmExport;
private ToolItem tlitmShowSystem;
private RelPanel rel;
private PreferenceChangeListener preferenceChangeListener;
private ToolBar tabToolBar = null;
private ToolBar mainToolBar;
public DbTabContentRel(DbTab parentTab, Composite contentParent) {
super(contentParent, SWT.None);
setLayout(new FormLayout());
mainToolBar = new ToolBar(this, SWT.None);
FormData fd_toolBar = new FormData();
fd_toolBar.left = new FormAttachment(0);
fd_toolBar.top = new FormAttachment(0);
mainToolBar.setLayoutData(fd_toolBar);
rel = new RelPanel(parentTab, this, SWT.None) {
@Override
public void changeToolbar() {
DbTabContentRel.this.changeToolbar();
}
};
FormData fd_composite = new FormData();
fd_composite.left = new FormAttachment(0);
fd_composite.top = new FormAttachment(mainToolBar, 4);
fd_composite.right = new FormAttachment(100);
fd_composite.bottom = new FormAttachment(100);
rel.setLayoutData(fd_composite);
tlitmBackup = new ToolItem(mainToolBar, SWT.None);
tlitmBackup.setToolTipText("Make backup");
tlitmBackup.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
parentTab.makeBackup();
}
});
tlitmShow = new ToolItem(mainToolBar, SWT.None);
tlitmShow.setToolTipText("Show");
tlitmShow.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
rel.playItem();
}
});
tlitmNew = new ToolItem(mainToolBar, SWT.None);
tlitmNew.setToolTipText("New");
tlitmNew.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
rel.createItem();
}
});
tlitmDrop = new ToolItem(mainToolBar, SWT.None);
tlitmDrop.setToolTipText("Drop");
tlitmDrop.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
rel.dropItem();
}
});
tlitmDesign = new ToolItem(mainToolBar, SWT.None);
tlitmDesign.setToolTipText("Design");
tlitmDesign.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
rel.designItem();
}
});
tlitmRename = new ToolItem(mainToolBar, SWT.None);
tlitmRename.setToolTipText("Rename");
tlitmRename.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
rel.renameItem();
}
});
tlitmExport = new ToolItem(mainToolBar, SWT.None);
tlitmExport.setToolTipText("Export");
tlitmExport.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
rel.exportItem();
}
});
tlitmShowSystem = new ToolItem(mainToolBar, SWT.CHECK);
tlitmShowSystem.setToolTipText("Show system objects");
tlitmShowSystem.setSelection(rel.getShowSystemObjects());
tlitmShowSystem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
rel.setShowSystemObjects(tlitmShowSystem.getSelection());
}
});
setupIcons();
rel.addDbTreeListener(new DbTreeListener() {
public void select(DbTreeItem item) {
tlitmShow.setEnabled(item.canPlay());
tlitmNew.setEnabled(item.canCreate());
tlitmDrop.setEnabled(item.canDrop());
tlitmDesign.setEnabled(item.canDesign());
tlitmRename.setEnabled(item.canRename());
tlitmExport.setEnabled(item.canExport());
}
public void tabChangeNotify() {
changeToolbar();
}
});
preferenceChangeListener = new PreferenceChangeAdapter("DbTabContentRel") {
@Override
public void preferenceChange(PreferenceChangeEvent evt) {
setupIcons();
}
};
Preferences.addPreferenceChangeListener(PreferencePageGeneral.LARGE_ICONS, preferenceChangeListener);
tlitmShow.setEnabled(false);
tlitmNew.setEnabled(false);
tlitmDrop.setEnabled(false);
tlitmDesign.setEnabled(false);
tlitmRename.setEnabled(false);
tlitmExport.setEnabled(false);
}
protected void changeToolbar() {
if (tabToolBar != null) {
tabToolBar.dispose();
tabToolBar = null;
}
CTabFolder tabs = rel.getTabFolder();
CTabItem selectedTab = tabs.getSelection();
if (selectedTab != null) {
if (selectedTab instanceof DbTreeTab) {
tabToolBar = ((DbTreeTab)selectedTab).getToolBar(DbTabContentRel.this);
if (tabToolBar != null) {
FormData fd_toolBar = new FormData();
fd_toolBar.left = new FormAttachment(mainToolBar);
fd_toolBar.top = new FormAttachment(0);
fd_toolBar.right = new FormAttachment(100);
tabToolBar.setLayoutData(fd_toolBar);
}
}
}
layout();
}
public void dispose() {
Preferences.removePreferenceChangeListener(PreferencePageGeneral.LARGE_ICONS, preferenceChangeListener);
super.dispose();
}
private void setupIcons() {
tlitmBackup.setImage(IconLoader.loadIcon("safeIcon"));
tlitmShow.setImage(IconLoader.loadIcon("play"));
tlitmNew.setImage(IconLoader.loadIcon("item_add"));
tlitmDrop.setImage(IconLoader.loadIcon("item_delete"));
tlitmDesign.setImage(IconLoader.loadIcon("item_design"));
tlitmRename.setImage(IconLoader.loadIcon("rename"));
tlitmExport.setImage(IconLoader.loadIcon("export"));
tlitmShowSystem.setImage(IconLoader.loadIcon("gears"));
}
public void notifyIconSizeChange() {
setupIcons();
}
public void redisplayed() {
rel.redisplayed();
}
}