/** * */ package org.hibernate.eclipse.console; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.hibernate.console.ConsoleConfiguration; import org.hibernate.console.KnownConfigurations; import org.hibernate.console.KnownConfigurationsAdapter; import org.hibernate.console.KnownConfigurationsListener; import org.hibernate.eclipse.console.utils.LaunchHelper; import org.jboss.tools.hibernate.runtime.spi.ISessionFactory; final class ConfigurationCombo extends ComboContribution { private KnownConfigurationsListener listener; private SelectionAdapter selectionAdapter; private QueryEditor editor; protected ConfigurationCombo(String id, QueryEditor qe) { super( id ); this.editor = qe; } protected Control createControl(Composite parent) { selectionAdapter = new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { editor.setConsoleConfigurationName( comboControl.getText() ); } }; Control control = super.createControl( parent ); listener = new KnownConfigurationsAdapter() { public void sessionFactoryClosing( ConsoleConfiguration configuration, ISessionFactory closingFactory) { } public void sessionFactoryBuilt(ConsoleConfiguration ccfg, ISessionFactory builtFactory) { } public void configurationRemoved(ConsoleConfiguration root, boolean forUpdate) { populateComboBox(); } public void configurationAdded(ConsoleConfiguration root) { populateComboBox(); } }; KnownConfigurations.getInstance().addConsoleConfigurationListener( listener ); return control; } protected void populateComboBox() { ConsoleConfiguration[] configurations = LaunchHelper.findFilteredSortedConsoleConfigs(); final String[] names = new String[configurations.length]; for (int i = 0; i < configurations.length; i++) { names[i] = configurations[i].getName(); } final String name = editor.getConsoleConfigurationName()==null?"":editor.getConsoleConfigurationName(); //$NON-NLS-1$ comboControl.getDisplay().syncExec( new Runnable() { public void run() { comboControl.setItems( names ); comboControl.setText( name ); editor.setConsoleConfigurationName( comboControl.getText() ); } } ); } public void dispose() { super.dispose(); if ( listener != null ) { KnownConfigurations.getInstance().removeConfigurationListener( listener ); } } protected SelectionListener getSelectionAdapter() { return selectionAdapter; } }