package org.hibernate.eclipse.launch;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Text;
import org.hibernate.eclipse.console.HibernateConsoleMessages;
import org.hibernate.util.xpl.StringHelper;
abstract public class ConsoleConfigurationTab extends AbstractLaunchConfigurationTab {
protected class ChangeListener implements ModifyListener, SelectionListener {
public void modifyText(ModifyEvent e) {
updateLaunchConfigurationDialog();
}
public void widgetDefaultSelected(SelectionEvent e) {/*do nothing*/}
public void widgetSelected(SelectionEvent e) {
// can use e.getSource() to handle button selection
updateLaunchConfigurationDialog();
}
}
ChangeListener changeListener = new ChangeListener();
protected Button createBrowseButton(Group group, SelectionListener selectionListener) {
Button button = createPushButton(group, HibernateConsoleMessages.ConsoleConfigurationTab_browse, null);
button.addSelectionListener(selectionListener);
return button;
}
protected Button createSetupButton(Group group, SelectionListener selectionListener) {
Button button = createPushButton(group, HibernateConsoleMessages.ConsoleConfigurationTab_setup, null);
button.addSelectionListener(selectionListener);
return button;
}
protected Button createNewFileButton(Group group, SelectionListener selectionListener) {
Button button = createPushButton(group, HibernateConsoleMessages.ConsoleConfigurationTab_create_new, null);
button.addSelectionListener(selectionListener);
return button;
}
protected Group createGroup(Composite parent, String title) {
return createGroup(parent, title, 2);
}
protected Group createGroup(Composite parent, String title, int columns) {
Font font = parent.getFont();
Group group= new Group(parent, SWT.NONE);
group.setText(title);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(gd);
GridLayout layout = new GridLayout();
layout.numColumns = columns;
group.setLayout(layout);
group.setFont(font);
return group;
}
protected ChangeListener getChangeListener() {
return changeListener;
}
protected Text createBrowseEditor(Composite parent, Group group) {
Text text = new Text(group, SWT.SINGLE | SWT.BORDER);
Font font=parent.getFont();
GridData gd;
gd = new GridData(GridData.FILL_HORIZONTAL);
text.setLayoutData(gd);
text.setFont(font);
text.addModifyListener(getChangeListener());
return text;
}
protected String nonEmptyTrimOrNull(Text t) {
return nonEmptyTrimOrNull( t.getText() );
}
String nonEmptyTrimOrNull(String str) {
if(StringHelper.isEmpty( str )) {
return null;
} else {
return str.trim();
}
}
}