package org.hibernate.eclipse.launch;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
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.eclipse.console.HibernateConsolePlugin;
import org.hibernate.eclipse.console.utils.DialogSelectionHelper;
import org.hibernate.eclipse.console.utils.DriverClassHelpers;
import org.xml.sax.EntityResolver;
public class ConsoleConfigurationOptionsTab extends ConsoleConfigurationTab {
private Combo dialectNameCombo;
private Text entityResolverClassNameText;
private Text namingStrategyClassNameText;
private DriverClassHelpers helper = new DriverClassHelpers();
public void createControl(Composite parent) {
Font font = parent.getFont();
Composite comp = new Composite(parent, SWT.NONE);
setControl(comp);
GridLayout layout = new GridLayout();
layout.verticalSpacing = 0;
comp.setLayout(layout);
comp.setFont(font);
createDialectNameCombo( comp );
createNamingStrategyClassNameEditor( comp );
createEntityResolverClassNameEditor( comp );
}
private void createDialectNameCombo(Composite parent) {
Group group = createGroup( parent, HibernateConsoleMessages.NewConfigurationWizardPage_database_dialect );
dialectNameCombo = new Combo(group, SWT.NONE);
dialectNameCombo.setItems(helper.getDialectNames());
Font font=parent.getFont();
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
dialectNameCombo.setLayoutData(gd);
dialectNameCombo.setFont(font);
dialectNameCombo.addModifyListener(getChangeListener());
}
private void createNamingStrategyClassNameEditor(Composite parent) {
Group group = createGroup( parent, HibernateConsoleMessages.ConsoleConfigurationOptionsTab_naming_strategy );
namingStrategyClassNameText = createBrowseEditor( parent, group);
createBrowseButton( group, new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
handleNamingStrategyBrowse();
}
});
}
private void createEntityResolverClassNameEditor(Composite parent) {
Group group = createGroup( parent, HibernateConsoleMessages.ConsoleConfigurationOptionsTab_entity_resolver );
entityResolverClassNameText = createBrowseEditor( parent, group);
createBrowseButton( group, new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
handleEntityResolverBrowse();
}
});
}
public String getName() {
return HibernateConsoleMessages.ConsoleConfigurationOptionsTab_options;
}
public Image getImage() {
return DebugUITools.getImage(IInternalDebugUIConstants.IMG_OBJS_COMMON_TAB);
}
public void initializeFrom(ILaunchConfiguration configuration) {
try {
String dialect = configuration.getAttribute( IConsoleConfigurationLaunchConstants.DIALECT, "" ); //$NON-NLS-1$
dialectNameCombo.setText( helper.getShortDialectName(dialect) );
namingStrategyClassNameText.setText( configuration.getAttribute( IConsoleConfigurationLaunchConstants.NAMING_STRATEGY, "" ) ); //$NON-NLS-1$
entityResolverClassNameText.setText( configuration.getAttribute( IConsoleConfigurationLaunchConstants.ENTITY_RESOLVER, "" ) ); //$NON-NLS-1$
}
catch (CoreException e) {
HibernateConsolePlugin.getDefault().log(e);
}
}
public void performApply(ILaunchConfigurationWorkingCopy configuration) {
String dialect = nonEmptyTrimOrNull( dialectNameCombo.getText() );
dialect = helper.getDialectClass(dialect);
configuration.setAttribute( IConsoleConfigurationLaunchConstants.DIALECT, nonEmptyTrimOrNull( dialect ) );
configuration.setAttribute( IConsoleConfigurationLaunchConstants.NAMING_STRATEGY, nonEmptyTrimOrNull( namingStrategyClassNameText ) );
configuration.setAttribute( IConsoleConfigurationLaunchConstants.ENTITY_RESOLVER, nonEmptyTrimOrNull( entityResolverClassNameText ) );
}
public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
}
private void handleEntityResolverBrowse() {
String string = DialogSelectionHelper.chooseImplementation(EntityResolver.class.getName(), entityResolverClassNameText.getText(), HibernateConsoleMessages.ConsoleConfigurationOptionsTab_select_entity_resolver_class, getShell());
if(string!=null) {
entityResolverClassNameText.setText(string);
}
}
private void handleNamingStrategyBrowse() {
String string = DialogSelectionHelper.chooseImplementation("org.hibernate.cfg.NamingStrategy", namingStrategyClassNameText.getText(), HibernateConsoleMessages.ConsoleConfigurationOptionsTab_select_naming_strategy_class, getShell());
if(string!=null) {
namingStrategyClassNameText.setText(string);
}
}
}