package org.reldb.dbrowser.ui.content.cmd; import java.io.IOException; import org.eclipse.swt.SWT; 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.ToolItem; import org.reldb.dbrowser.ui.DbTab; import org.reldb.dbrowser.ui.RevDatabase; import org.reldb.dbrowser.ui.RevDatabase.Script; import org.reldb.rel.exceptions.DatabaseFormatVersionException; public class DbTabContentCmd extends Composite { private CmdPanel cmdPanel = null; private RevDatabase database = null; private String name = "Untitled"; private String oldScript; private ToolItem copyOutputToInputBtn; public DbTabContentCmd(DbTab parentTab, Composite contentParent) throws NumberFormatException, ClassNotFoundException, IOException, DatabaseFormatVersionException { super(contentParent, SWT.None); setLayout(new FormLayout()); cmdPanel = new CmdPanel(parentTab.getConnection(), this, CmdPanel.NONE) { @Override protected void notifyEnhancedOutputChange() { copyOutputToInputBtn.setEnabled(!cmdPanel.getEnhancedOutput()); } @Override protected void notifyHistoryAdded(String historyItem) { if (database != null) database.addScriptHistory(name, historyItem); oldScript = historyItem; } @Override protected String getDefaultSaveFileName() { return name; } }; CmdPanelToolbar toolBar = new CmdPanelToolbar(this, cmdPanel.getCmdPanelOutput()) { @Override public void addAdditionalItemsBefore(CmdPanelToolbar toolbar) { // backup icon addItem("Make backup", "safeIcon", SWT.PUSH).addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { parentTab.makeBackup(); } }); // copy output to input copyOutputToInputBtn = addItem("Copy output to input", "copyToInputIcon", SWT.PUSH); copyOutputToInputBtn.setEnabled(!cmdPanel.getEnhancedOutput()); copyOutputToInputBtn.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { cmdPanel.copyOutputToInput(); } }); } @Override public void addAdditionalItemsAfter(CmdPanelToolbar toolbar) { addSeparatorFill(); // zoom addItem("Zoom in or out", "view_fullscreen", SWT.PUSH).addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { zoom(); } }); } }; FormData fd_toolBar = new FormData(); fd_toolBar.left = new FormAttachment(0); fd_toolBar.top = new FormAttachment(0); fd_toolBar.right = new FormAttachment(100); toolBar.getToolBar().setLayoutData(fd_toolBar); FormData fd_composite = new FormData(); fd_composite.left = new FormAttachment(0); fd_composite.top = new FormAttachment(toolBar.getToolBar()); fd_composite.right = new FormAttachment(100); fd_composite.bottom = new FormAttachment(100); cmdPanel.setLayoutData(fd_composite); if (parentTab.getConnection().hasRevExtensions() >= 0) { name = "scratchpad"; database = new RevDatabase(parentTab.getConnection()); Script script = database.getScript(name); oldScript = script.getContent(); cmdPanel.setContent(script); } } private void zoom() { cmdPanel.zoom(); } public void dispose() { if (database != null) { String newScript = cmdPanel.getInputText(); if (!oldScript.equals(newScript)) database.addScriptHistory(name, oldScript); database.setScript(name, cmdPanel.getInputText()); } cmdPanel.dispose(); super.dispose(); } public void redisplayed() { cmdPanel.redisplayed(); } public void load(String fname) { cmdPanel.load(fname); } public void setContent(String content) { cmdPanel.setContent(content); } }