package org.reldb.dbrowser.ui.content.rel;
import java.io.IOException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.reldb.dbrowser.ui.content.cmd.CmdPanel;
import org.reldb.dbrowser.ui.content.rel.DbTreeItem;
import org.reldb.dbrowser.ui.content.rel.DbTreeTab;
import org.reldb.dbrowser.ui.content.rel.RelPanel;
import org.reldb.rel.exceptions.DatabaseFormatVersionException;
public abstract class NaiveCreatorTab extends DbTreeTab {
private Text name;
private StyledText definition;
private CmdPanel cmdPanel;
/**
* Create the composite.
* @param parent
* @param style
*/
public NaiveCreatorTab(RelPanel parent, DbTreeItem item) {
super(parent, item);
setControl(getContents(parent.getTabFolder()));
}
protected Composite getContents(Composite parent) {
SashForm sash = new SashForm(parent, SWT.HORIZONTAL);
Composite entrySide = new Composite(sash, SWT.NONE);
try {
cmdPanel = new CmdPanel(relPanel.getConnection(), sash, CmdPanel.NO_INPUT_TOOLBAR) {
public void notifyExecuteSuccess() {
relPanel.redisplayed();
MessageDialog.openInformation(relPanel.getShell(), "Note", "Success!");
NaiveCreatorTab.this.dispose();
}
};
} catch (NumberFormatException | ClassNotFoundException | IOException | DatabaseFormatVersionException e) {
e.printStackTrace();
}
entrySide.setLayout(new FormLayout());
Label lblName = new Label(entrySide, SWT.NONE);
FormData fd_lblName = new FormData();
fd_lblName.left = new FormAttachment(0, 10);
fd_lblName.top = new FormAttachment(0, 10);
lblName.setLayoutData(fd_lblName);
lblName.setText("Name: ");
name = new Text(entrySide, SWT.BORDER);
FormData fd_text = new FormData();
fd_text.left = new FormAttachment(lblName);
fd_text.top = new FormAttachment(0, 5);
fd_text.right = new FormAttachment(100, -10);
name.setLayoutData(fd_text);
name.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
updateGeneratedCommand();
}
});
Label lblDefinition = new Label(entrySide, SWT.NONE);
FormData fd_lblDefinition = new FormData();
fd_lblDefinition.left = new FormAttachment(0, 10);
fd_lblDefinition.top = new FormAttachment(lblName, 5);
lblDefinition.setLayoutData(fd_lblDefinition);
lblDefinition.setText("Definition:");
definition = new StyledText(entrySide, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
definition.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
updateGeneratedCommand();
}
});
FormData fd_styledTextDefinition = new FormData();
fd_styledTextDefinition.left = new FormAttachment(0, 10);
fd_styledTextDefinition.top = new FormAttachment(lblDefinition, 2);
fd_styledTextDefinition.right = new FormAttachment(100, -10);
fd_styledTextDefinition.bottom = new FormAttachment(100, -10);
definition.setLayoutData(fd_styledTextDefinition);
return sash;
}
protected void updateGeneratedCommand() {
cmdPanel.setInputText(getGeneratedCommand(name.getText(), definition.getText()));
}
protected abstract String getGeneratedCommand(String name, String definition);
}