You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ds...@apache.org on 2009/07/21 20:51:41 UTC
svn commit: r796467 [19/25] - in /felix/trunk/sigil:
common/core.tests/src/org/apache/felix/sigil/core/
common/core/src/org/apache/felix/sigil/bnd/
common/core/src/org/apache/felix/sigil/config/
common/core/src/org/apache/felix/sigil/core/ common/core/...
Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryConfigurationDialog.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryConfigurationDialog.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryConfigurationDialog.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryConfigurationDialog.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.ui.eclipse.ui.preferences;
+
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
@@ -57,244 +58,294 @@
import org.eclipse.swt.widgets.Text;
import org.osgi.framework.Version;
-public class LibraryConfigurationDialog extends TitleAreaDialog {
- private static final Comparator<IPackageImport> COMPARATOR = new Comparator<IPackageImport>() {
- public int compare(IPackageImport o1, IPackageImport o2) {
- return o1.getPackageName().compareTo(o2.getPackageName());
- }
- };
-
- private String name;
- private Version version;
- private TreeSet<IPackageImport> packageImports = new TreeSet<IPackageImport>(COMPARATOR);
-
- private boolean editOnly;
-
- private TableViewer viewer;
- private Text txtName;
- private Text txtVersion;
-
- public LibraryConfigurationDialog(Shell parentShell) {
- super(parentShell);
- name = "";
- version = Version.emptyVersion;
- }
-
- public LibraryConfigurationDialog(Shell parentShell, ILibrary lib) {
- super(parentShell);
- editOnly = true;
- name = lib.getName();
- version = lib.getVersion();
- packageImports.addAll( lib.getImports() );
- }
-
- @Override
- protected Control createDialogArea(Composite par) {
- setTitle("Add Library");
- Composite container = (Composite) super.createDialogArea(par);
-
- Composite topPanel = new Composite(container, SWT.NONE);
-
- new Label(topPanel, SWT.NONE).setText("Name");
-
- txtName = new Text(topPanel, SWT.BORDER);
- txtName.setEditable( !editOnly );
- if(name != null) txtName.setText(name);
-
- new Label(topPanel, SWT.NONE).setText("Version");
-
- txtVersion = new Text(topPanel, SWT.BORDER);
- txtVersion.setText( version.toString() );
- txtVersion.setEditable( !editOnly );
-
- Composite bottomPanel = new Composite(container, SWT.NONE);
-
- Table table = new Table(bottomPanel, SWT.BORDER);
- table.setSize( new Point( 300, 200 ) );
-
- Button add = new Button(bottomPanel, SWT.PUSH);
- add.setText("Add...");
-
- final Button edit = new Button(bottomPanel, SWT.PUSH);
- edit.setText("Edit...");
- edit.setEnabled(false);
-
- final Button remove = new Button(bottomPanel, SWT.PUSH);
- remove.setText("Remove");
- remove.setEnabled(false);
-
- updateState();
-
- // Hookup Listeners
- txtName.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateState();
- }
- });
- txtVersion.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- updateState();
- }
- });
- add.addSelectionListener( new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- handleAdd();
- }
- });
- edit.addSelectionListener( new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- handleEdit();
- }
- });
- remove.addSelectionListener( new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- handleRemove();
- }
- });
-
- // Layout
- topPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- topPanel.setLayout(new GridLayout(2, false));
- txtName.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- txtVersion.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- bottomPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- bottomPanel.setLayout(new GridLayout(2, false));
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 4));
- add.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- edit.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- remove.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
-
- // Table Viewer
- viewer = new TableViewer(table);
- viewer.setLabelProvider(new LabelProvider() {
- @Override
- public String getText(Object element) {
- IPackageImport pi = (IPackageImport) element;
- return pi.getPackageName() + " " + pi.getVersions();
- }
- });
- viewer.addSelectionChangedListener( new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- edit.setEnabled(!event.getSelection().isEmpty());
- remove.setEnabled(!event.getSelection().isEmpty());
- }
- });
- viewer.setContentProvider( new DefaultTableProvider() {
- public Object[] getElements(Object inputElement) {
- return toArray(inputElement);
- }
- } );
-
- viewer.setInput(packageImports);
- return container;
- }
-
- private void updateState() {
- String error = null;
- String warning = null;
-
- name = txtName.getText();
-
- try {
- version = new Version(txtVersion.getText());
- if(version.getQualifier().indexOf('_') > -1) {
- warning = "The use of underscores in a version qualifier is discouraged.";
- }
- } catch (IllegalArgumentException e) {
- version = null;
- error = "Invalid version format";
- }
-
- Button okButton = getButton(IDialogConstants.OK_ID);
- if(okButton != null && !okButton.isDisposed()) okButton.setEnabled(allowOkay());
-
- setErrorMessage(error);
- setMessage(warning, IMessageProvider.WARNING);
- }
-
- private boolean allowOkay() {
- return name != null && name.length() > 0 && version != null;
- }
-
- @Override
- protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
- Button button = super.createButton(parent, id, label, defaultButton);
- if(id == IDialogConstants.OK_ID) {
- button.setEnabled(allowOkay());
- }
- return button;
- }
-
- private void handleAdd() {
- /*NewResourceSelectionDialog<? extends IPackageModelElement> dialog = ResourcesDialogHelper.createImportDialog(getShell(), "Add Imported Package", null, packageImports);
- if ( dialog.open() == Window.OK ) {
- IPackageImport pi = ModelElementFactory.getInstance().newModelElement(IPackageImport.class);
- pi.setPackageName(dialog.getSelectedName());
- pi.setVersions(dialog.getSelectedVersions());
- pi.setOptional(dialog.isOptional());
-
- packageImports.add(pi);
- viewer.refresh();
- }*/
- }
-
- private void handleEdit() {
- /*IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
-
- boolean changed = false;
-
- if ( !selection.isEmpty() ) {
- for ( Iterator<IPackageImport> i = selection.iterator(); i.hasNext(); ) {
- IPackageImport packageImport = i.next();
- NewResourceSelectionDialog<? extends IPackageModelElement> dialog = ResourcesDialogHelper.createImportDialog( getShell(), "Edit Imported Package", packageImport, packageImports );
- dialog.setVersions( packageImport.getVersions() );
- dialog.setOptional(packageImport.isOptional());
- if ( dialog.open() == Window.OK ) {
- changed = true;
- String packageName = dialog.getSelectedName();
- VersionRange versionRange = dialog.getSelectedVersions();
-
- IPackageImport newImport = ModelElementFactory.getInstance().newModelElement(IPackageImport.class);
- newImport.setPackageName(packageName);
- newImport.setVersions(versionRange);
- newImport.setOptional(dialog.isOptional());
-
- packageImports.remove(packageImport);
- packageImports.add(newImport);
- }
- }
- }
-
- if ( changed ) {
- viewer.refresh();
- } */
- }
-
- private void handleRemove() {
- IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
-
- if ( !selection.isEmpty() ) {
- for ( Iterator<IPackageImport> i = selection.iterator(); i.hasNext(); ) {
- packageImports.remove( i.next() );
- }
-
- viewer.refresh();
- }
- }
-
- public ILibrary getLibrary() {
- ILibrary library = ModelElementFactory.getInstance().newModelElement(ILibrary.class);
-
- library.setName(name);
- library.setVersion(version);
-
- for (IPackageImport pi : packageImports) {
- library.addImport(pi);
- }
-
- return library;
- }
+public class LibraryConfigurationDialog extends TitleAreaDialog
+{
+
+ private static final Comparator<IPackageImport> COMPARATOR = new Comparator<IPackageImport>()
+ {
+ public int compare( IPackageImport o1, IPackageImport o2 )
+ {
+ return o1.getPackageName().compareTo( o2.getPackageName() );
+ }
+ };
+
+ private String name;
+ private Version version;
+ private TreeSet<IPackageImport> packageImports = new TreeSet<IPackageImport>( COMPARATOR );
+
+ private boolean editOnly;
+
+ private TableViewer viewer;
+ private Text txtName;
+ private Text txtVersion;
+
+
+ public LibraryConfigurationDialog( Shell parentShell )
+ {
+ super( parentShell );
+ name = "";
+ version = Version.emptyVersion;
+ }
+
+
+ public LibraryConfigurationDialog( Shell parentShell, ILibrary lib )
+ {
+ super( parentShell );
+ editOnly = true;
+ name = lib.getName();
+ version = lib.getVersion();
+ packageImports.addAll( lib.getImports() );
+ }
+
+
+ @Override
+ protected Control createDialogArea( Composite par )
+ {
+ setTitle( "Add Library" );
+ Composite container = ( Composite ) super.createDialogArea( par );
+
+ Composite topPanel = new Composite( container, SWT.NONE );
+
+ new Label( topPanel, SWT.NONE ).setText( "Name" );
+
+ txtName = new Text( topPanel, SWT.BORDER );
+ txtName.setEditable( !editOnly );
+ if ( name != null )
+ txtName.setText( name );
+
+ new Label( topPanel, SWT.NONE ).setText( "Version" );
+
+ txtVersion = new Text( topPanel, SWT.BORDER );
+ txtVersion.setText( version.toString() );
+ txtVersion.setEditable( !editOnly );
+
+ Composite bottomPanel = new Composite( container, SWT.NONE );
+
+ Table table = new Table( bottomPanel, SWT.BORDER );
+ table.setSize( new Point( 300, 200 ) );
+
+ Button add = new Button( bottomPanel, SWT.PUSH );
+ add.setText( "Add..." );
+
+ final Button edit = new Button( bottomPanel, SWT.PUSH );
+ edit.setText( "Edit..." );
+ edit.setEnabled( false );
+
+ final Button remove = new Button( bottomPanel, SWT.PUSH );
+ remove.setText( "Remove" );
+ remove.setEnabled( false );
+
+ updateState();
+
+ // Hookup Listeners
+ txtName.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ updateState();
+ }
+ } );
+ txtVersion.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ updateState();
+ }
+ } );
+ add.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ handleAdd();
+ }
+ } );
+ edit.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ handleEdit();
+ }
+ } );
+ remove.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ handleRemove();
+ }
+ } );
+
+ // Layout
+ topPanel.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+ topPanel.setLayout( new GridLayout( 2, false ) );
+ txtName.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+ txtVersion.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+
+ bottomPanel.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
+ bottomPanel.setLayout( new GridLayout( 2, false ) );
+ table.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 1, 4 ) );
+ add.setLayoutData( new GridData( SWT.FILL, SWT.FILL, false, false ) );
+ edit.setLayoutData( new GridData( SWT.FILL, SWT.FILL, false, false ) );
+ remove.setLayoutData( new GridData( SWT.FILL, SWT.FILL, false, false ) );
+
+ // Table Viewer
+ viewer = new TableViewer( table );
+ viewer.setLabelProvider( new LabelProvider()
+ {
+ @Override
+ public String getText( Object element )
+ {
+ IPackageImport pi = ( IPackageImport ) element;
+ return pi.getPackageName() + " " + pi.getVersions();
+ }
+ } );
+ viewer.addSelectionChangedListener( new ISelectionChangedListener()
+ {
+ public void selectionChanged( SelectionChangedEvent event )
+ {
+ edit.setEnabled( !event.getSelection().isEmpty() );
+ remove.setEnabled( !event.getSelection().isEmpty() );
+ }
+ } );
+ viewer.setContentProvider( new DefaultTableProvider()
+ {
+ public Object[] getElements( Object inputElement )
+ {
+ return toArray( inputElement );
+ }
+ } );
+
+ viewer.setInput( packageImports );
+ return container;
+ }
+
+
+ private void updateState()
+ {
+ String error = null;
+ String warning = null;
+
+ name = txtName.getText();
+
+ try
+ {
+ version = new Version( txtVersion.getText() );
+ if ( version.getQualifier().indexOf( '_' ) > -1 )
+ {
+ warning = "The use of underscores in a version qualifier is discouraged.";
+ }
+ }
+ catch ( IllegalArgumentException e )
+ {
+ version = null;
+ error = "Invalid version format";
+ }
+
+ Button okButton = getButton( IDialogConstants.OK_ID );
+ if ( okButton != null && !okButton.isDisposed() )
+ okButton.setEnabled( allowOkay() );
+
+ setErrorMessage( error );
+ setMessage( warning, IMessageProvider.WARNING );
+ }
+
+
+ private boolean allowOkay()
+ {
+ return name != null && name.length() > 0 && version != null;
+ }
+
+
+ @Override
+ protected Button createButton( Composite parent, int id, String label, boolean defaultButton )
+ {
+ Button button = super.createButton( parent, id, label, defaultButton );
+ if ( id == IDialogConstants.OK_ID )
+ {
+ button.setEnabled( allowOkay() );
+ }
+ return button;
+ }
+
+
+ private void handleAdd()
+ {
+ /*NewResourceSelectionDialog<? extends IPackageModelElement> dialog = ResourcesDialogHelper.createImportDialog(getShell(), "Add Imported Package", null, packageImports);
+ if ( dialog.open() == Window.OK ) {
+ IPackageImport pi = ModelElementFactory.getInstance().newModelElement(IPackageImport.class);
+ pi.setPackageName(dialog.getSelectedName());
+ pi.setVersions(dialog.getSelectedVersions());
+ pi.setOptional(dialog.isOptional());
+
+ packageImports.add(pi);
+ viewer.refresh();
+ }*/
+ }
+
+
+ private void handleEdit()
+ {
+ /*IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+
+ boolean changed = false;
+
+ if ( !selection.isEmpty() ) {
+ for ( Iterator<IPackageImport> i = selection.iterator(); i.hasNext(); ) {
+ IPackageImport packageImport = i.next();
+ NewResourceSelectionDialog<? extends IPackageModelElement> dialog = ResourcesDialogHelper.createImportDialog( getShell(), "Edit Imported Package", packageImport, packageImports );
+ dialog.setVersions( packageImport.getVersions() );
+ dialog.setOptional(packageImport.isOptional());
+ if ( dialog.open() == Window.OK ) {
+ changed = true;
+ String packageName = dialog.getSelectedName();
+ VersionRange versionRange = dialog.getSelectedVersions();
+
+ IPackageImport newImport = ModelElementFactory.getInstance().newModelElement(IPackageImport.class);
+ newImport.setPackageName(packageName);
+ newImport.setVersions(versionRange);
+ newImport.setOptional(dialog.isOptional());
+
+ packageImports.remove(packageImport);
+ packageImports.add(newImport);
+ }
+ }
+ }
+
+ if ( changed ) {
+ viewer.refresh();
+ } */
+ }
+
+
+ private void handleRemove()
+ {
+ IStructuredSelection selection = ( IStructuredSelection ) viewer.getSelection();
+
+ if ( !selection.isEmpty() )
+ {
+ for ( Iterator<IPackageImport> i = selection.iterator(); i.hasNext(); )
+ {
+ packageImports.remove( i.next() );
+ }
+
+ viewer.refresh();
+ }
+ }
+
+
+ public ILibrary getLibrary()
+ {
+ ILibrary library = ModelElementFactory.getInstance().newModelElement( ILibrary.class );
+
+ library.setName( name );
+ library.setVersion( version );
+
+ for ( IPackageImport pi : packageImports )
+ {
+ library.addImport( pi );
+ }
+
+ return library;
+ }
}
Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryPreferencePage.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryPreferencePage.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryPreferencePage.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/LibraryPreferencePage.java Tue Jul 21 18:51:33 2009
@@ -17,8 +17,9 @@
* under the License.
*/
-package org.apache.felix.sigil.ui.eclipse.ui.preferences;
-
+package org.apache.felix.sigil.ui.eclipse.ui.preferences;
+
+
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
@@ -27,8 +28,8 @@
import org.apache.felix.sigil.model.eclipse.ILibrary;
import org.apache.felix.sigil.ui.eclipse.ui.util.DefaultTableProvider;
import org.eclipse.jface.layout.GridDataFactory;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
@@ -36,208 +37,257 @@
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
+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.Control;
-import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-public class LibraryPreferencePage extends PreferencePage implements
- IWorkbenchPreferencePage {
-
- private TreeSet<ILibrary> libraries;
- private TableViewer libraryView;
-
- private Table table;
- private Button btnAdd;
- private Button btnEdit;
- private Button btnRemove;
-
- public void init(IWorkbench workbench) {
- }
-
- @Override
- protected Control createContents(Composite parent) {
- Control control = initContents( parent );
- loadPreferences();
- return control;
- }
-
- @Override
- protected IPreferenceStore doGetPreferenceStore() {
- return SigilCore.getDefault().getPreferenceStore();
- }
-
- @Override
- protected void performDefaults() {
- super.performDefaults();
- }
-
- @Override
- public boolean performOk() {
- IPreferenceStore prefs = getPreferenceStore();
- for ( String key : prefs.getString( SigilCore.LIBRARY_KEYS_PREF ).split( "," ) ) {
- prefs.setToDefault(key);
- }
-
- StringBuffer keys = new StringBuffer();
-
- for ( ILibrary lib : libraries ) {
- throw new IllegalStateException( "XXX-FIXME-XXX");
- }
-
- prefs.setValue( SigilCore.LIBRARY_KEYS_PREF, keys.toString() );
-
- return true;
- }
-
- private Control initContents(Composite parent) {
- Composite control = new Composite(parent, SWT.NONE);
- control.setFont(parent.getFont());
-
- GridLayout grid = new GridLayout(3, false);
- control.setLayout(grid);
-
- initRepositories(control);
-
- return control;
- }
-
- private void initRepositories(Composite composite) {
- // Create controls
- new Label(composite, SWT.NONE).setText("Libraries:");
- new Label(composite, SWT.NONE); // Spacer
- table = new Table(composite, SWT.SINGLE | SWT.BORDER );
- //table.setFont(control.getFont());
- btnAdd = new Button(composite, SWT.PUSH);
- btnAdd.setText("Add...");
- //add.setFont(control.getFont());
- btnEdit = new Button(composite, SWT.PUSH);
- btnEdit.setText("Edit...");
- //edit.setFont(control.getFont());
- btnRemove = new Button(composite, SWT.PUSH);
- btnRemove.setText("Remove");
- //remove.setFont(control.getFont());
-
- // Table Model
- libraries = new TreeSet<ILibrary>(new Comparator<ILibrary> () {
- public int compare(ILibrary l1, ILibrary l2) {
- int c = l1.getName().compareTo( l2.getName() );
- if ( c == 0 ) {
- c = l1.getVersion().compareTo( l2.getVersion() );
- }
- return c;
- }
- });
- libraryView = new TableViewer(table);
- libraryView.setLabelProvider(new LabelProvider() {
- public String getText(Object element) {
- ILibrary rep = (ILibrary) element;
- return rep.getName() + " " + rep.getVersion();
- }
- });
- libraryView.setContentProvider( new DefaultTableProvider() {
- public Object[] getElements(Object inputElement) {
- return toArray(inputElement);
- }
- } );
- libraryView.setInput(libraries);
-
- // Initialize controls
- updateButtonStates();
-
- // Hookup Listeners
- libraryView.addSelectionChangedListener( new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- updateButtonStates();
- }
- });
- btnAdd.addSelectionListener( new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- handleAdd();
- }
- });
- btnEdit.addSelectionListener( new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- handleEdit();
- }
- });
- btnRemove.addSelectionListener( new SelectionAdapter() {
- public void widgetSelected(SelectionEvent e) {
- handleRemove();
- }
- });
-
- // Layout
- composite.setLayout(new GridLayout(2, false));
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 4));
- GridDataFactory buttonGD = GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER);
- btnAdd.setLayoutData(buttonGD.create());
- btnEdit.setLayoutData(buttonGD.create());
- btnRemove.setLayoutData(buttonGD.create());
- }
-
- private void updateButtonStates() {
- ISelection sel = libraryView.getSelection();
- btnEdit.setEnabled(!sel.isEmpty());
- btnRemove.setEnabled(!sel.isEmpty());
- }
-
-
- private void handleAdd() {
- LibraryConfigurationDialog d = new LibraryConfigurationDialog(getShell());
- if ( d.open() == Window.OK ) {
- libraries.add(d.getLibrary());
- libraryView.refresh();
- }
- }
-
- private void handleEdit() {
- IStructuredSelection sel = (IStructuredSelection) libraryView.getSelection();
- boolean change = false;
-
-
- for ( @SuppressWarnings("unchecked") Iterator<ILibrary> i = sel.iterator(); i.hasNext(); ) {
- ILibrary lib = i.next();
- LibraryConfigurationDialog d = new LibraryConfigurationDialog(getShell(), lib );
- if ( d.open() == Window.OK ) {
- libraries.remove(lib);
- libraries.add(d.getLibrary());
- change = true;
- }
- }
-
- if ( change ) {
- libraryView.refresh();
- }
- }
-
- private void handleRemove() {
- IStructuredSelection sel = (IStructuredSelection) libraryView.getSelection();
- for ( @SuppressWarnings("unchecked") Iterator<ILibrary> i = sel.iterator(); i.hasNext(); ) {
- libraries.remove(i);
- }
- libraryView.refresh();
- }
-
- private void loadPreferences() {
- IPreferenceStore prefs = getPreferenceStore();
- String keys = prefs.getString( SigilCore.LIBRARY_KEYS_PREF );
- if ( keys.trim().length() > 0 ) {
- for ( String key : keys.split( "," ) ) {
- String libStr = prefs.getString(key);
- // XXX-FIXME-XXX parse library string
- // lib = parse(libstr);
- // libraries.add(lib);
- }
- libraryView.refresh();
- }
- }
-}
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+
+public class LibraryPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
+{
+
+ private TreeSet<ILibrary> libraries;
+ private TableViewer libraryView;
+
+ private Table table;
+ private Button btnAdd;
+ private Button btnEdit;
+ private Button btnRemove;
+
+
+ public void init( IWorkbench workbench )
+ {
+ }
+
+
+ @Override
+ protected Control createContents( Composite parent )
+ {
+ Control control = initContents( parent );
+ loadPreferences();
+ return control;
+ }
+
+
+ @Override
+ protected IPreferenceStore doGetPreferenceStore()
+ {
+ return SigilCore.getDefault().getPreferenceStore();
+ }
+
+
+ @Override
+ protected void performDefaults()
+ {
+ super.performDefaults();
+ }
+
+
+ @Override
+ public boolean performOk()
+ {
+ IPreferenceStore prefs = getPreferenceStore();
+ for ( String key : prefs.getString( SigilCore.LIBRARY_KEYS_PREF ).split( "," ) )
+ {
+ prefs.setToDefault( key );
+ }
+
+ StringBuffer keys = new StringBuffer();
+
+ for ( ILibrary lib : libraries )
+ {
+ throw new IllegalStateException( "XXX-FIXME-XXX" );
+ }
+
+ prefs.setValue( SigilCore.LIBRARY_KEYS_PREF, keys.toString() );
+
+ return true;
+ }
+
+
+ private Control initContents( Composite parent )
+ {
+ Composite control = new Composite( parent, SWT.NONE );
+ control.setFont( parent.getFont() );
+
+ GridLayout grid = new GridLayout( 3, false );
+ control.setLayout( grid );
+
+ initRepositories( control );
+
+ return control;
+ }
+
+
+ private void initRepositories( Composite composite )
+ {
+ // Create controls
+ new Label( composite, SWT.NONE ).setText( "Libraries:" );
+ new Label( composite, SWT.NONE ); // Spacer
+ table = new Table( composite, SWT.SINGLE | SWT.BORDER );
+ //table.setFont(control.getFont());
+ btnAdd = new Button( composite, SWT.PUSH );
+ btnAdd.setText( "Add..." );
+ //add.setFont(control.getFont());
+ btnEdit = new Button( composite, SWT.PUSH );
+ btnEdit.setText( "Edit..." );
+ //edit.setFont(control.getFont());
+ btnRemove = new Button( composite, SWT.PUSH );
+ btnRemove.setText( "Remove" );
+ //remove.setFont(control.getFont());
+
+ // Table Model
+ libraries = new TreeSet<ILibrary>( new Comparator<ILibrary>()
+ {
+ public int compare( ILibrary l1, ILibrary l2 )
+ {
+ int c = l1.getName().compareTo( l2.getName() );
+ if ( c == 0 )
+ {
+ c = l1.getVersion().compareTo( l2.getVersion() );
+ }
+ return c;
+ }
+ } );
+ libraryView = new TableViewer( table );
+ libraryView.setLabelProvider( new LabelProvider()
+ {
+ public String getText( Object element )
+ {
+ ILibrary rep = ( ILibrary ) element;
+ return rep.getName() + " " + rep.getVersion();
+ }
+ } );
+ libraryView.setContentProvider( new DefaultTableProvider()
+ {
+ public Object[] getElements( Object inputElement )
+ {
+ return toArray( inputElement );
+ }
+ } );
+ libraryView.setInput( libraries );
+
+ // Initialize controls
+ updateButtonStates();
+
+ // Hookup Listeners
+ libraryView.addSelectionChangedListener( new ISelectionChangedListener()
+ {
+ public void selectionChanged( SelectionChangedEvent event )
+ {
+ updateButtonStates();
+ }
+ } );
+ btnAdd.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ handleAdd();
+ }
+ } );
+ btnEdit.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ handleEdit();
+ }
+ } );
+ btnRemove.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ handleRemove();
+ }
+ } );
+
+ // Layout
+ composite.setLayout( new GridLayout( 2, false ) );
+ table.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 1, 4 ) );
+ GridDataFactory buttonGD = GridDataFactory.swtDefaults().align( SWT.FILL, SWT.CENTER );
+ btnAdd.setLayoutData( buttonGD.create() );
+ btnEdit.setLayoutData( buttonGD.create() );
+ btnRemove.setLayoutData( buttonGD.create() );
+ }
+
+
+ private void updateButtonStates()
+ {
+ ISelection sel = libraryView.getSelection();
+ btnEdit.setEnabled( !sel.isEmpty() );
+ btnRemove.setEnabled( !sel.isEmpty() );
+ }
+
+
+ private void handleAdd()
+ {
+ LibraryConfigurationDialog d = new LibraryConfigurationDialog( getShell() );
+ if ( d.open() == Window.OK )
+ {
+ libraries.add( d.getLibrary() );
+ libraryView.refresh();
+ }
+ }
+
+
+ private void handleEdit()
+ {
+ IStructuredSelection sel = ( IStructuredSelection ) libraryView.getSelection();
+ boolean change = false;
+
+ for ( @SuppressWarnings("unchecked")
+ Iterator<ILibrary> i = sel.iterator(); i.hasNext(); )
+ {
+ ILibrary lib = i.next();
+ LibraryConfigurationDialog d = new LibraryConfigurationDialog( getShell(), lib );
+ if ( d.open() == Window.OK )
+ {
+ libraries.remove( lib );
+ libraries.add( d.getLibrary() );
+ change = true;
+ }
+ }
+
+ if ( change )
+ {
+ libraryView.refresh();
+ }
+ }
+
+
+ private void handleRemove()
+ {
+ IStructuredSelection sel = ( IStructuredSelection ) libraryView.getSelection();
+ for ( @SuppressWarnings("unchecked")
+ Iterator<ILibrary> i = sel.iterator(); i.hasNext(); )
+ {
+ libraries.remove( i );
+ }
+ libraryView.refresh();
+ }
+
+
+ private void loadPreferences()
+ {
+ IPreferenceStore prefs = getPreferenceStore();
+ String keys = prefs.getString( SigilCore.LIBRARY_KEYS_PREF );
+ if ( keys.trim().length() > 0 )
+ {
+ for ( String key : keys.split( "," ) )
+ {
+ String libStr = prefs.getString( key );
+ // XXX-FIXME-XXX parse library string
+ // lib = parse(libstr);
+ // libraries.add(lib);
+ }
+ libraryView.refresh();
+ }
+ }
+}
Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/OptionalPrompt.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/OptionalPrompt.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/OptionalPrompt.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/OptionalPrompt.java Tue Jul 21 18:51:33 2009
@@ -19,58 +19,76 @@
package org.apache.felix.sigil.ui.eclipse.ui.preferences;
+
import org.apache.felix.sigil.eclipse.preferences.PromptablePreference;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialogWithToggle;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.widgets.Shell;
-public class OptionalPrompt {
- public static boolean optionallyPrompt(IPreferenceStore prefStore, String prefName, String title, String text, Shell parentShell) {
- boolean result = false;
-
- PromptablePreference value = PromptablePreference.valueOf(prefStore.getString(prefName));
- switch(value) {
- case Always:
- result = true;
- break;
- case Never:
- result = false;
- break;
- case Prompt:
- MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion(parentShell, title, text, "Do not ask this again", false, null, null);
- result = (dialog.getReturnCode() == IDialogConstants.YES_ID);
- if(dialog.getToggleState()) {
- // User said don't ask again... take the current answer as the new preference
- prefStore.setValue(prefName, result ? PromptablePreference.Always.name() : PromptablePreference.Never.name());
- }
- }
-
- return result;
- }
-
- public static int optionallyPromptWithCancel(IPreferenceStore prefStore, String prefName, String title, String text, Shell parentShell) {
- int result = IDialogConstants.NO_ID;
-
- PromptablePreference value = PromptablePreference.valueOf(prefStore.getString(prefName));
- switch(value) {
- case Always:
- result = IDialogConstants.YES_ID;
- break;
- case Never:
- result = IDialogConstants.NO_ID;
- break;
- case Prompt:
- MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoCancelQuestion(parentShell, title, text, "Do not ask this again", false, null, null);
- result = dialog.getReturnCode();
- if ( result != IDialogConstants.CANCEL_ID ) {
- if(dialog.getToggleState()) {
- // User said don't ask again... take the current answer as the new preference
- prefStore.setValue(prefName, (result == IDialogConstants.YES_ID) ? PromptablePreference.Always.name() : PromptablePreference.Never.name());
- }
- }
- }
-
- return result;
- }
+
+public class OptionalPrompt
+{
+ public static boolean optionallyPrompt( IPreferenceStore prefStore, String prefName, String title, String text,
+ Shell parentShell )
+ {
+ boolean result = false;
+
+ PromptablePreference value = PromptablePreference.valueOf( prefStore.getString( prefName ) );
+ switch ( value )
+ {
+ case Always:
+ result = true;
+ break;
+ case Never:
+ result = false;
+ break;
+ case Prompt:
+ MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoQuestion( parentShell, title, text,
+ "Do not ask this again", false, null, null );
+ result = ( dialog.getReturnCode() == IDialogConstants.YES_ID );
+ if ( dialog.getToggleState() )
+ {
+ // User said don't ask again... take the current answer as the new preference
+ prefStore.setValue( prefName, result ? PromptablePreference.Always.name()
+ : PromptablePreference.Never.name() );
+ }
+ }
+
+ return result;
+ }
+
+
+ public static int optionallyPromptWithCancel( IPreferenceStore prefStore, String prefName, String title,
+ String text, Shell parentShell )
+ {
+ int result = IDialogConstants.NO_ID;
+
+ PromptablePreference value = PromptablePreference.valueOf( prefStore.getString( prefName ) );
+ switch ( value )
+ {
+ case Always:
+ result = IDialogConstants.YES_ID;
+ break;
+ case Never:
+ result = IDialogConstants.NO_ID;
+ break;
+ case Prompt:
+ MessageDialogWithToggle dialog = MessageDialogWithToggle.openYesNoCancelQuestion( parentShell, title,
+ text, "Do not ask this again", false, null, null );
+ result = dialog.getReturnCode();
+ if ( result != IDialogConstants.CANCEL_ID )
+ {
+ if ( dialog.getToggleState() )
+ {
+ // User said don't ask again... take the current answer as the new preference
+ prefStore.setValue( prefName,
+ ( result == IDialogConstants.YES_ID ) ? PromptablePreference.Always.name()
+ : PromptablePreference.Never.name() );
+ }
+ }
+ }
+
+ return result;
+ }
}
Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/ProjectDependentPreferencesPage.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/ProjectDependentPreferencesPage.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/ProjectDependentPreferencesPage.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/ProjectDependentPreferencesPage.java Tue Jul 21 18:51:33 2009
@@ -19,31 +19,43 @@
package org.apache.felix.sigil.ui.eclipse.ui.preferences;
+
import org.apache.felix.sigil.ui.eclipse.ui.util.ProjectUtils;
import org.eclipse.jface.preference.PreferencePage;
-public abstract class ProjectDependentPreferencesPage extends PreferencePage {
- public ProjectDependentPreferencesPage(String title) {
- super(title);
- }
-
- @Override
- public boolean performOk() {
- if ( isDirty() ) {
- return ProjectUtils.runTaskWithRebuildCheck(new Runnable() {
- public void run() {
- doSave();
- }
-
- }, getShell());
- }
- else {
- return true;
- }
- }
+public abstract class ProjectDependentPreferencesPage extends PreferencePage
+{
+
+ public ProjectDependentPreferencesPage( String title )
+ {
+ super( title );
+ }
+
+
+ @Override
+ public boolean performOk()
+ {
+ if ( isDirty() )
+ {
+ return ProjectUtils.runTaskWithRebuildCheck( new Runnable()
+ {
+ public void run()
+ {
+ doSave();
+ }
+
+ }, getShell() );
+ }
+ else
+ {
+ return true;
+ }
+ }
+
+
+ protected abstract void doSave();
- protected abstract void doSave();
- protected abstract boolean isDirty();
+ protected abstract boolean isDirty();
}
Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/SigilPreferencePage.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/SigilPreferencePage.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/SigilPreferencePage.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/SigilPreferencePage.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.ui.eclipse.ui.preferences;
+
import org.apache.felix.sigil.eclipse.SigilCore;
import org.apache.felix.sigil.eclipse.preferences.PromptablePreference;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
@@ -27,33 +28,42 @@
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
-public class SigilPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
- @Override
- protected void createFieldEditors() {
- RadioGroupFieldEditor impExpField = new RadioGroupFieldEditor(SigilCore.PREFERENCES_ADD_IMPORT_FOR_EXPORT, "Add Imports for New Exports", 1, new String[][] {
- new String[] { "Always (Recommended)", PromptablePreference.Always.toString() },
- new String[] { "Prompt", PromptablePreference.Prompt.toString() },
- new String[] { "Never", PromptablePreference.Never.toString() }
- }, getFieldEditorParent(), true);
-
- addField(impExpField);
-
- RadioGroupFieldEditor rebuildExpField = new RadioGroupFieldEditor(SigilCore.PREFERENCES_REBUILD_PROJECTS, "Rebuild Projects On Install Change", 1, new String[][] {
- new String[] { "Always (Recommended)", PromptablePreference.Always.toString() },
- new String[] { "Prompt", PromptablePreference.Prompt.toString() },
- new String[] { "Never", PromptablePreference.Never.toString() }
- }, getFieldEditorParent(), true);
-
- addField(rebuildExpField);
- }
-
- @Override
- protected IPreferenceStore doGetPreferenceStore() {
- return SigilCore.getDefault().getPreferenceStore();
- }
+public class SigilPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage
+{
- public void init(IWorkbench workbench) {
- }
+ @Override
+ protected void createFieldEditors()
+ {
+ RadioGroupFieldEditor impExpField = new RadioGroupFieldEditor( SigilCore.PREFERENCES_ADD_IMPORT_FOR_EXPORT,
+ "Add Imports for New Exports", 1, new String[][]
+ { new String[]
+ { "Always (Recommended)", PromptablePreference.Always.toString() }, new String[]
+ { "Prompt", PromptablePreference.Prompt.toString() }, new String[]
+ { "Never", PromptablePreference.Never.toString() } }, getFieldEditorParent(), true );
+
+ addField( impExpField );
+
+ RadioGroupFieldEditor rebuildExpField = new RadioGroupFieldEditor( SigilCore.PREFERENCES_REBUILD_PROJECTS,
+ "Rebuild Projects On Install Change", 1, new String[][]
+ { new String[]
+ { "Always (Recommended)", PromptablePreference.Always.toString() }, new String[]
+ { "Prompt", PromptablePreference.Prompt.toString() }, new String[]
+ { "Never", PromptablePreference.Never.toString() } }, getFieldEditorParent(), true );
+
+ addField( rebuildExpField );
+ }
+
+
+ @Override
+ protected IPreferenceStore doGetPreferenceStore()
+ {
+ return SigilCore.getDefault().getPreferenceStore();
+ }
+
+
+ public void init( IWorkbench workbench )
+ {
+ }
}
Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/VersionsPreferencePage.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/VersionsPreferencePage.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/VersionsPreferencePage.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/VersionsPreferencePage.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.ui.eclipse.ui.preferences;
+
import org.apache.felix.sigil.eclipse.SigilCore;
import org.apache.felix.sigil.model.common.VersionRange;
import org.apache.felix.sigil.model.common.VersionRangeBoundingRule;
@@ -43,326 +44,394 @@
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.osgi.framework.Version;
-public class VersionsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
- private static final Version SAMPLE_VERSION = new Version(1, 2, 3, "qualifier");
+public class VersionsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage
+{
+
+ private static final Version SAMPLE_VERSION = new Version( 1, 2, 3, "qualifier" );
- private IWorkbench workbench;
+ private IWorkbench workbench;
- private Button btnLowerBoundExact;
- private Button btnLowerBoundMicro;
- private Button btnLowerBoundMinor;
- private Button btnLowerBoundMajor;
- private Button btnLowerBoundAny;
-
- private Button btnUpperBoundExact;
- private Button btnUpperBoundMicro;
- private Button btnUpperBoundMinor;
- private Button btnUpperBoundMajor;
- private Button btnUpperBoundAny;
-
- private Text txtSampleVersion;
- private Label lblCalculatedRange;
- private Text txtMatchVersion;
- private Label lblMatchResult;
-
- private VersionRangeBoundingRule lowerBoundRule;
- private VersionRangeBoundingRule upperBoundRule;
-
- private Version sampleVersion = SAMPLE_VERSION;
- private Version matchVersion = null;
-
- public VersionsPreferencePage() {
- super();
- setDescription("Specify the Lower and Upper bounds for a default version range calculated from a point version, e.g. \"1.2.3.qualifier\"");
- }
-
- @Override
- protected Control createContents(Composite parent) {
- // Create controls
- Composite composite = new Composite(parent, SWT.NONE);
-
- Group grpLowerBound = new Group(composite, SWT.NONE);
- grpLowerBound.setText("Lower Bound");
- btnLowerBoundExact = new Button(grpLowerBound, SWT.RADIO);
- btnLowerBoundExact.setText("Exact e.g. [1.2.3.qualifer, ...)");
- btnLowerBoundMicro = new Button(grpLowerBound, SWT.RADIO);
- btnLowerBoundMicro.setText("Micro e.g. [1.2.3, ...)");
- btnLowerBoundMinor = new Button(grpLowerBound, SWT.RADIO);
- btnLowerBoundMinor.setText("Minor e.g. [1.2, ...)");
- btnLowerBoundMajor = new Button(grpLowerBound, SWT.RADIO);
- btnLowerBoundMajor.setText("Major e.g. [1, ...)");
- btnLowerBoundAny = new Button(grpLowerBound, SWT.RADIO);
- btnLowerBoundAny.setText("Any e.g. [0, ...)");
-
- Group grpUpperBound = new Group(composite, SWT.NONE);
- grpUpperBound.setText("Upper Bound");
-
- btnUpperBoundExact = new Button(grpUpperBound, SWT.RADIO);
- btnUpperBoundExact.setText("Exact e.g. [..., 1.2.3.qualifer]");
- btnUpperBoundMicro = new Button(grpUpperBound, SWT.RADIO);
- btnUpperBoundMicro.setText("Micro e.g. [..., 1.2.4)");
- btnUpperBoundMinor = new Button(grpUpperBound, SWT.RADIO);
- btnUpperBoundMinor.setText("Minor e.g. [..., 1.3)");
- btnUpperBoundMajor = new Button(grpUpperBound, SWT.RADIO);
- btnUpperBoundMajor.setText("Major e.g. [..., 2)");
- btnUpperBoundAny = new Button(grpUpperBound, SWT.RADIO);
- btnUpperBoundAny.setText("Any e.g. [..., \u221e)");
-
- Group grpRangeTest = new Group(composite, SWT.NONE);
- grpRangeTest.setText("Range Test");
- new Label(grpRangeTest, SWT.NONE).setText("Sample Input Version: ");
- txtSampleVersion = new Text(grpRangeTest, SWT.BORDER);
- new Label(grpRangeTest, SWT.NONE).setText("Calculated Version Range: ");
- lblCalculatedRange = new Label(grpRangeTest, SWT.NONE);
-
- new Label(grpRangeTest, SWT.NONE).setText("Test: ");
- txtMatchVersion = new Text(grpRangeTest, SWT.BORDER);
- new Label(grpRangeTest, SWT.NONE).setText("Result: ");
- lblMatchResult = new Label(grpRangeTest, SWT.NONE);
-
- // Initialize controls
- loadPreferences(false);
- updateRadioButtons();
-
- txtSampleVersion.setText(sampleVersion.toString());
- updateCalculatedRange();
-
- // Add listeners
- SelectionListener buttonListener = new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- readRadioButtons();
- updateCalculatedRange();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- readRadioButtons();
- updateCalculatedRange();
- }
- };
- btnLowerBoundAny.addSelectionListener(buttonListener);
- btnLowerBoundMajor.addSelectionListener(buttonListener);
- btnLowerBoundMinor.addSelectionListener(buttonListener);
- btnLowerBoundMicro.addSelectionListener(buttonListener);
- btnLowerBoundExact.addSelectionListener(buttonListener);
-
- btnUpperBoundAny.addSelectionListener(buttonListener);
- btnUpperBoundMajor.addSelectionListener(buttonListener);
- btnUpperBoundMinor.addSelectionListener(buttonListener);
- btnUpperBoundMicro.addSelectionListener(buttonListener);
- btnUpperBoundExact.addSelectionListener(buttonListener);
-
- txtSampleVersion.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- try {
- sampleVersion = new Version(txtSampleVersion.getText());
- } catch (IllegalArgumentException x) {
- sampleVersion = null;
- }
- updateCalculatedRange();
- }
- });
- txtMatchVersion.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- try {
- matchVersion = new Version(txtMatchVersion.getText());
- } catch (IllegalArgumentException x) {
- matchVersion = null;
- }
- updateCalculatedRange();
- }
- });
-
- // Layout
- GridLayout layout = new GridLayout(1, false);
- layout.verticalSpacing = 20;
- composite.setLayout(layout);
-
- grpLowerBound.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- grpLowerBound.setLayout(new GridLayout(1, false));
-
- grpUpperBound.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- grpUpperBound.setLayout(new GridLayout(1, false));
-
- grpRangeTest.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
- grpRangeTest.setLayout(new GridLayout(2, false));
-
- txtSampleVersion.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- lblCalculatedRange.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- txtMatchVersion.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- lblMatchResult.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- return composite;
- }
-
- private void loadPreferences(boolean useDefaults) {
- IPreferenceStore prefs = getPreferenceStore();
- String lowerBoundStr;
- if(useDefaults) {
- lowerBoundStr = prefs.getDefaultString(SigilCore.DEFAULT_VERSION_LOWER_BOUND);
- } else {
- lowerBoundStr = prefs.getString(SigilCore.DEFAULT_VERSION_LOWER_BOUND);
- }
-
- String upperBoundStr;
- if(useDefaults) {
- upperBoundStr = prefs.getDefaultString(SigilCore.DEFAULT_VERSION_UPPER_BOUND);
- } else {
- upperBoundStr = prefs.getString(SigilCore.DEFAULT_VERSION_UPPER_BOUND);
- }
-
- lowerBoundRule = VersionRangeBoundingRule.valueOf(lowerBoundStr);
- upperBoundRule = VersionRangeBoundingRule.valueOf(upperBoundStr);
- }
-
- private void updateRadioButtons() {
- switch (lowerBoundRule) {
- case Exact:
- btnLowerBoundExact.setSelection(true);
- btnLowerBoundMicro.setSelection(false);
- btnLowerBoundMinor.setSelection(false);
- btnLowerBoundMajor.setSelection(false);
- btnLowerBoundAny.setSelection(false);
- break;
- case Micro:
- btnLowerBoundExact.setSelection(false);
- btnLowerBoundMicro.setSelection(true);
- btnLowerBoundMinor.setSelection(false);
- btnLowerBoundMajor.setSelection(false);
- btnLowerBoundAny.setSelection(false);
- break;
- case Minor:
- btnLowerBoundExact.setSelection(false);
- btnLowerBoundMicro.setSelection(false);
- btnLowerBoundMinor.setSelection(true);
- btnLowerBoundMajor.setSelection(false);
- btnLowerBoundAny.setSelection(false);
- break;
- case Major:
- btnLowerBoundExact.setSelection(false);
- btnLowerBoundMicro.setSelection(false);
- btnLowerBoundMinor.setSelection(false);
- btnLowerBoundMajor.setSelection(true);
- btnLowerBoundAny.setSelection(false);
- break;
- case Any:
- btnLowerBoundExact.setSelection(false);
- btnLowerBoundMicro.setSelection(false);
- btnLowerBoundMinor.setSelection(false);
- btnLowerBoundMajor.setSelection(false);
- btnLowerBoundAny.setSelection(true);
- break;
- }
-
- switch (upperBoundRule) {
- case Exact:
- btnUpperBoundExact.setSelection(true);
- btnUpperBoundMicro.setSelection(false);
- btnUpperBoundMinor.setSelection(false);
- btnUpperBoundMajor.setSelection(false);
- btnUpperBoundAny.setSelection(false);
- break;
- case Micro:
- btnUpperBoundExact.setSelection(false);
- btnUpperBoundMicro.setSelection(true);
- btnUpperBoundMinor.setSelection(false);
- btnUpperBoundMajor.setSelection(false);
- btnUpperBoundAny.setSelection(false);
- break;
- case Minor:
- btnUpperBoundExact.setSelection(false);
- btnUpperBoundMicro.setSelection(false);
- btnUpperBoundMinor.setSelection(true);
- btnUpperBoundMajor.setSelection(false);
- btnUpperBoundAny.setSelection(false);
- break;
- case Major:
- btnUpperBoundExact.setSelection(false);
- btnUpperBoundMicro.setSelection(false);
- btnUpperBoundMinor.setSelection(false);
- btnUpperBoundMajor.setSelection(true);
- btnUpperBoundAny.setSelection(false);
- break;
- case Any:
- btnUpperBoundExact.setSelection(false);
- btnUpperBoundMicro.setSelection(false);
- btnUpperBoundMinor.setSelection(false);
- btnUpperBoundMajor.setSelection(false);
- btnUpperBoundAny.setSelection(true);
- }
- }
-
- private void readRadioButtons() {
- if (btnLowerBoundExact.getSelection()) {
- lowerBoundRule = VersionRangeBoundingRule.Exact;
- } else if (btnLowerBoundMicro.getSelection()) {
- lowerBoundRule = VersionRangeBoundingRule.Micro;
- } else if (btnLowerBoundMinor.getSelection()) {
- lowerBoundRule = VersionRangeBoundingRule.Minor;
- } else if (btnLowerBoundMajor.getSelection()) {
- lowerBoundRule = VersionRangeBoundingRule.Major;
- } else if(btnLowerBoundAny.getSelection()) {
- lowerBoundRule = VersionRangeBoundingRule.Any;
- }
-
- if (btnUpperBoundExact.getSelection()) {
- upperBoundRule = VersionRangeBoundingRule.Exact;
- } else if (btnUpperBoundMicro.getSelection()) {
- upperBoundRule = VersionRangeBoundingRule.Micro;
- } else if (btnUpperBoundMinor.getSelection()) {
- upperBoundRule = VersionRangeBoundingRule.Minor;
- } else if (btnUpperBoundMajor.getSelection()) {
- upperBoundRule = VersionRangeBoundingRule.Major;
- } else if(btnUpperBoundAny.getSelection()) {
- upperBoundRule = VersionRangeBoundingRule.Any;
- }
- }
-
- private void updateCalculatedRange() {
- VersionRange range;
- String rangeStr;
- String matchResult;
-
- if(sampleVersion == null) {
- range = null;
- rangeStr = "";
- } else {
- range = VersionRange.newInstance(sampleVersion, lowerBoundRule, upperBoundRule);
- rangeStr = range.toString();
- }
- lblCalculatedRange.setText(rangeStr);
-
- if(matchVersion == null || range == null) {
- matchResult = "";
- } else {
- matchResult = range.contains(matchVersion) ? "MATCH!" : "No Match";
- }
- lblMatchResult.setText(matchResult);
- }
-
- public void init(IWorkbench workbench) {
- this.workbench = workbench;
- }
-
- @Override
- protected IPreferenceStore doGetPreferenceStore() {
- return SigilCore.getDefault().getPreferenceStore();
- }
-
- @Override
- public boolean performOk() {
- getPreferenceStore().setValue(SigilCore.DEFAULT_VERSION_LOWER_BOUND, lowerBoundRule.name());
- getPreferenceStore().setValue(SigilCore.DEFAULT_VERSION_UPPER_BOUND, upperBoundRule.name());
-
- return true;
- }
-
- @Override
- protected void performDefaults() {
- super.performDefaults();
- loadPreferences(true);
- updateRadioButtons();
- updateCalculatedRange();
- }
+ private Button btnLowerBoundExact;
+ private Button btnLowerBoundMicro;
+ private Button btnLowerBoundMinor;
+ private Button btnLowerBoundMajor;
+ private Button btnLowerBoundAny;
+
+ private Button btnUpperBoundExact;
+ private Button btnUpperBoundMicro;
+ private Button btnUpperBoundMinor;
+ private Button btnUpperBoundMajor;
+ private Button btnUpperBoundAny;
+
+ private Text txtSampleVersion;
+ private Label lblCalculatedRange;
+ private Text txtMatchVersion;
+ private Label lblMatchResult;
+
+ private VersionRangeBoundingRule lowerBoundRule;
+ private VersionRangeBoundingRule upperBoundRule;
+
+ private Version sampleVersion = SAMPLE_VERSION;
+ private Version matchVersion = null;
+
+
+ public VersionsPreferencePage()
+ {
+ super();
+ setDescription( "Specify the Lower and Upper bounds for a default version range calculated from a point version, e.g. \"1.2.3.qualifier\"" );
+ }
+
+
+ @Override
+ protected Control createContents( Composite parent )
+ {
+ // Create controls
+ Composite composite = new Composite( parent, SWT.NONE );
+
+ Group grpLowerBound = new Group( composite, SWT.NONE );
+ grpLowerBound.setText( "Lower Bound" );
+ btnLowerBoundExact = new Button( grpLowerBound, SWT.RADIO );
+ btnLowerBoundExact.setText( "Exact e.g. [1.2.3.qualifer, ...)" );
+ btnLowerBoundMicro = new Button( grpLowerBound, SWT.RADIO );
+ btnLowerBoundMicro.setText( "Micro e.g. [1.2.3, ...)" );
+ btnLowerBoundMinor = new Button( grpLowerBound, SWT.RADIO );
+ btnLowerBoundMinor.setText( "Minor e.g. [1.2, ...)" );
+ btnLowerBoundMajor = new Button( grpLowerBound, SWT.RADIO );
+ btnLowerBoundMajor.setText( "Major e.g. [1, ...)" );
+ btnLowerBoundAny = new Button( grpLowerBound, SWT.RADIO );
+ btnLowerBoundAny.setText( "Any e.g. [0, ...)" );
+
+ Group grpUpperBound = new Group( composite, SWT.NONE );
+ grpUpperBound.setText( "Upper Bound" );
+
+ btnUpperBoundExact = new Button( grpUpperBound, SWT.RADIO );
+ btnUpperBoundExact.setText( "Exact e.g. [..., 1.2.3.qualifer]" );
+ btnUpperBoundMicro = new Button( grpUpperBound, SWT.RADIO );
+ btnUpperBoundMicro.setText( "Micro e.g. [..., 1.2.4)" );
+ btnUpperBoundMinor = new Button( grpUpperBound, SWT.RADIO );
+ btnUpperBoundMinor.setText( "Minor e.g. [..., 1.3)" );
+ btnUpperBoundMajor = new Button( grpUpperBound, SWT.RADIO );
+ btnUpperBoundMajor.setText( "Major e.g. [..., 2)" );
+ btnUpperBoundAny = new Button( grpUpperBound, SWT.RADIO );
+ btnUpperBoundAny.setText( "Any e.g. [..., \u221e)" );
+
+ Group grpRangeTest = new Group( composite, SWT.NONE );
+ grpRangeTest.setText( "Range Test" );
+ new Label( grpRangeTest, SWT.NONE ).setText( "Sample Input Version: " );
+ txtSampleVersion = new Text( grpRangeTest, SWT.BORDER );
+ new Label( grpRangeTest, SWT.NONE ).setText( "Calculated Version Range: " );
+ lblCalculatedRange = new Label( grpRangeTest, SWT.NONE );
+
+ new Label( grpRangeTest, SWT.NONE ).setText( "Test: " );
+ txtMatchVersion = new Text( grpRangeTest, SWT.BORDER );
+ new Label( grpRangeTest, SWT.NONE ).setText( "Result: " );
+ lblMatchResult = new Label( grpRangeTest, SWT.NONE );
+
+ // Initialize controls
+ loadPreferences( false );
+ updateRadioButtons();
+
+ txtSampleVersion.setText( sampleVersion.toString() );
+ updateCalculatedRange();
+
+ // Add listeners
+ SelectionListener buttonListener = new SelectionListener()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ readRadioButtons();
+ updateCalculatedRange();
+ }
+
+
+ public void widgetDefaultSelected( SelectionEvent e )
+ {
+ readRadioButtons();
+ updateCalculatedRange();
+ }
+ };
+ btnLowerBoundAny.addSelectionListener( buttonListener );
+ btnLowerBoundMajor.addSelectionListener( buttonListener );
+ btnLowerBoundMinor.addSelectionListener( buttonListener );
+ btnLowerBoundMicro.addSelectionListener( buttonListener );
+ btnLowerBoundExact.addSelectionListener( buttonListener );
+
+ btnUpperBoundAny.addSelectionListener( buttonListener );
+ btnUpperBoundMajor.addSelectionListener( buttonListener );
+ btnUpperBoundMinor.addSelectionListener( buttonListener );
+ btnUpperBoundMicro.addSelectionListener( buttonListener );
+ btnUpperBoundExact.addSelectionListener( buttonListener );
+
+ txtSampleVersion.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ try
+ {
+ sampleVersion = new Version( txtSampleVersion.getText() );
+ }
+ catch ( IllegalArgumentException x )
+ {
+ sampleVersion = null;
+ }
+ updateCalculatedRange();
+ }
+ } );
+ txtMatchVersion.addModifyListener( new ModifyListener()
+ {
+ public void modifyText( ModifyEvent e )
+ {
+ try
+ {
+ matchVersion = new Version( txtMatchVersion.getText() );
+ }
+ catch ( IllegalArgumentException x )
+ {
+ matchVersion = null;
+ }
+ updateCalculatedRange();
+ }
+ } );
+
+ // Layout
+ GridLayout layout = new GridLayout( 1, false );
+ layout.verticalSpacing = 20;
+ composite.setLayout( layout );
+
+ grpLowerBound.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) );
+ grpLowerBound.setLayout( new GridLayout( 1, false ) );
+
+ grpUpperBound.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) );
+ grpUpperBound.setLayout( new GridLayout( 1, false ) );
+
+ grpRangeTest.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, true ) );
+ grpRangeTest.setLayout( new GridLayout( 2, false ) );
+
+ txtSampleVersion.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+ lblCalculatedRange.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+ txtMatchVersion.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+ lblMatchResult.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, false ) );
+
+ return composite;
+ }
+
+
+ private void loadPreferences( boolean useDefaults )
+ {
+ IPreferenceStore prefs = getPreferenceStore();
+ String lowerBoundStr;
+ if ( useDefaults )
+ {
+ lowerBoundStr = prefs.getDefaultString( SigilCore.DEFAULT_VERSION_LOWER_BOUND );
+ }
+ else
+ {
+ lowerBoundStr = prefs.getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND );
+ }
+
+ String upperBoundStr;
+ if ( useDefaults )
+ {
+ upperBoundStr = prefs.getDefaultString( SigilCore.DEFAULT_VERSION_UPPER_BOUND );
+ }
+ else
+ {
+ upperBoundStr = prefs.getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND );
+ }
+
+ lowerBoundRule = VersionRangeBoundingRule.valueOf( lowerBoundStr );
+ upperBoundRule = VersionRangeBoundingRule.valueOf( upperBoundStr );
+ }
+
+
+ private void updateRadioButtons()
+ {
+ switch ( lowerBoundRule )
+ {
+ case Exact:
+ btnLowerBoundExact.setSelection( true );
+ btnLowerBoundMicro.setSelection( false );
+ btnLowerBoundMinor.setSelection( false );
+ btnLowerBoundMajor.setSelection( false );
+ btnLowerBoundAny.setSelection( false );
+ break;
+ case Micro:
+ btnLowerBoundExact.setSelection( false );
+ btnLowerBoundMicro.setSelection( true );
+ btnLowerBoundMinor.setSelection( false );
+ btnLowerBoundMajor.setSelection( false );
+ btnLowerBoundAny.setSelection( false );
+ break;
+ case Minor:
+ btnLowerBoundExact.setSelection( false );
+ btnLowerBoundMicro.setSelection( false );
+ btnLowerBoundMinor.setSelection( true );
+ btnLowerBoundMajor.setSelection( false );
+ btnLowerBoundAny.setSelection( false );
+ break;
+ case Major:
+ btnLowerBoundExact.setSelection( false );
+ btnLowerBoundMicro.setSelection( false );
+ btnLowerBoundMinor.setSelection( false );
+ btnLowerBoundMajor.setSelection( true );
+ btnLowerBoundAny.setSelection( false );
+ break;
+ case Any:
+ btnLowerBoundExact.setSelection( false );
+ btnLowerBoundMicro.setSelection( false );
+ btnLowerBoundMinor.setSelection( false );
+ btnLowerBoundMajor.setSelection( false );
+ btnLowerBoundAny.setSelection( true );
+ break;
+ }
+
+ switch ( upperBoundRule )
+ {
+ case Exact:
+ btnUpperBoundExact.setSelection( true );
+ btnUpperBoundMicro.setSelection( false );
+ btnUpperBoundMinor.setSelection( false );
+ btnUpperBoundMajor.setSelection( false );
+ btnUpperBoundAny.setSelection( false );
+ break;
+ case Micro:
+ btnUpperBoundExact.setSelection( false );
+ btnUpperBoundMicro.setSelection( true );
+ btnUpperBoundMinor.setSelection( false );
+ btnUpperBoundMajor.setSelection( false );
+ btnUpperBoundAny.setSelection( false );
+ break;
+ case Minor:
+ btnUpperBoundExact.setSelection( false );
+ btnUpperBoundMicro.setSelection( false );
+ btnUpperBoundMinor.setSelection( true );
+ btnUpperBoundMajor.setSelection( false );
+ btnUpperBoundAny.setSelection( false );
+ break;
+ case Major:
+ btnUpperBoundExact.setSelection( false );
+ btnUpperBoundMicro.setSelection( false );
+ btnUpperBoundMinor.setSelection( false );
+ btnUpperBoundMajor.setSelection( true );
+ btnUpperBoundAny.setSelection( false );
+ break;
+ case Any:
+ btnUpperBoundExact.setSelection( false );
+ btnUpperBoundMicro.setSelection( false );
+ btnUpperBoundMinor.setSelection( false );
+ btnUpperBoundMajor.setSelection( false );
+ btnUpperBoundAny.setSelection( true );
+ }
+ }
+
+
+ private void readRadioButtons()
+ {
+ if ( btnLowerBoundExact.getSelection() )
+ {
+ lowerBoundRule = VersionRangeBoundingRule.Exact;
+ }
+ else if ( btnLowerBoundMicro.getSelection() )
+ {
+ lowerBoundRule = VersionRangeBoundingRule.Micro;
+ }
+ else if ( btnLowerBoundMinor.getSelection() )
+ {
+ lowerBoundRule = VersionRangeBoundingRule.Minor;
+ }
+ else if ( btnLowerBoundMajor.getSelection() )
+ {
+ lowerBoundRule = VersionRangeBoundingRule.Major;
+ }
+ else if ( btnLowerBoundAny.getSelection() )
+ {
+ lowerBoundRule = VersionRangeBoundingRule.Any;
+ }
+
+ if ( btnUpperBoundExact.getSelection() )
+ {
+ upperBoundRule = VersionRangeBoundingRule.Exact;
+ }
+ else if ( btnUpperBoundMicro.getSelection() )
+ {
+ upperBoundRule = VersionRangeBoundingRule.Micro;
+ }
+ else if ( btnUpperBoundMinor.getSelection() )
+ {
+ upperBoundRule = VersionRangeBoundingRule.Minor;
+ }
+ else if ( btnUpperBoundMajor.getSelection() )
+ {
+ upperBoundRule = VersionRangeBoundingRule.Major;
+ }
+ else if ( btnUpperBoundAny.getSelection() )
+ {
+ upperBoundRule = VersionRangeBoundingRule.Any;
+ }
+ }
+
+
+ private void updateCalculatedRange()
+ {
+ VersionRange range;
+ String rangeStr;
+ String matchResult;
+
+ if ( sampleVersion == null )
+ {
+ range = null;
+ rangeStr = "";
+ }
+ else
+ {
+ range = VersionRange.newInstance( sampleVersion, lowerBoundRule, upperBoundRule );
+ rangeStr = range.toString();
+ }
+ lblCalculatedRange.setText( rangeStr );
+
+ if ( matchVersion == null || range == null )
+ {
+ matchResult = "";
+ }
+ else
+ {
+ matchResult = range.contains( matchVersion ) ? "MATCH!" : "No Match";
+ }
+ lblMatchResult.setText( matchResult );
+ }
+
+
+ public void init( IWorkbench workbench )
+ {
+ this.workbench = workbench;
+ }
+
+
+ @Override
+ protected IPreferenceStore doGetPreferenceStore()
+ {
+ return SigilCore.getDefault().getPreferenceStore();
+ }
+
+
+ @Override
+ public boolean performOk()
+ {
+ getPreferenceStore().setValue( SigilCore.DEFAULT_VERSION_LOWER_BOUND, lowerBoundRule.name() );
+ getPreferenceStore().setValue( SigilCore.DEFAULT_VERSION_UPPER_BOUND, upperBoundRule.name() );
+
+ return true;
+ }
+
+
+ @Override
+ protected void performDefaults()
+ {
+ super.performDefaults();
+ loadPreferences( true );
+ updateRadioButtons();
+ updateCalculatedRange();
+ }
}
Modified: felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/installs/OSGiInstallsPreferencePage.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/installs/OSGiInstallsPreferencePage.java?rev=796467&r1=796466&r2=796467&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/installs/OSGiInstallsPreferencePage.java (original)
+++ felix/trunk/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/preferences/installs/OSGiInstallsPreferencePage.java Tue Jul 21 18:51:33 2009
@@ -19,6 +19,7 @@
package org.apache.felix.sigil.ui.eclipse.ui.preferences.installs;
+
import java.util.HashMap;
import java.util.UUID;
@@ -52,250 +53,322 @@
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
-public class OSGiInstallsPreferencePage extends ProjectDependentPreferencesPage implements
- IWorkbenchPreferencePage {
- private class Install {
- private String id;
- private String location;
- private IOSGiInstallType type;
-
- private Install(String id, String location) {
- this.id = id;
- this.location = location;
- }
-
- private IOSGiInstallType getType() {
- if ( type == null ) {
- type = SigilCore.getInstallManager().findInstallType(location);
- }
- return type;
- }
- }
-
- private HashMap<String, Install> installs = new HashMap<String, Install>();
- private CheckboxTableViewer viewer;
- private boolean changed;
-
- public OSGiInstallsPreferencePage() {
- super("OSGi Installs");
- }
-
- public void init(IWorkbench workbench) {
- }
-
-
- @Override
- protected Control createContents(Composite parent) {
- Composite control = new Composite(parent, SWT.NONE);
-
- buildComponents(control);
-
- load();
-
- checkValid();
-
- return control;
- }
-
- @Override
- protected boolean isDirty() {
- return changed;
- }
-
-
- private void buildComponents(Composite control) {
- new Label(control, SWT.NONE).setText("Installs:");
- new Label(control, SWT.NONE); // padding
-
- Table table = new Table(control, SWT.CHECK | SWT.SINGLE | SWT.BORDER);
-
- Button add = new Button(control, SWT.PUSH);
- add.setText("Add");
- add.addSelectionListener( new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- add();
- }
- });
-
- final Button remove = new Button(control, SWT.PUSH);
- remove.setEnabled(false);
- remove.setText("Remove");
- remove.addSelectionListener( new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- remove();
- }
- });
-
- // viewers
- viewer = new CheckboxTableViewer(table);
- viewer.setContentProvider( new DefaultTableProvider() {
- public Object[] getElements(Object inputElement) {
- return toArray(inputElement);
- }
- });
-
- viewer.setLabelProvider( new LabelProvider() {
- @Override
- public String getText(Object element) {
- Install i = (Install) element;
- IOSGiInstallType type = i.getType();
- if ( type == null ) {
- return "<invalid> [" + i.location + "]";
- }
- else {
- return type.getName() + " " + type.getVersion() + " [" + i.location + "]";
- }
- }
-
- @Override
- public Image getImage(Object element) {
- Install i = (Install) element;
- IOSGiInstallType type = i.getType();
-
- if (type == null) {
- return null;
- } else {
- return type.getIcon();
- }
- }
- });
-
- viewer.addSelectionChangedListener( new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- boolean enabled = !event.getSelection().isEmpty();
- remove.setEnabled(enabled );
- }
- });
-
- viewer.addCheckStateListener( new ICheckStateListener () {
- public void checkStateChanged(CheckStateChangedEvent event) {
- if ( event.getChecked() ) {
- changed = true;
- }
- viewer.setCheckedElements( new Object[] { event.getElement() } );
- }
- });
-
- viewer.setInput(installs.values());
-
- // layout
- control.setLayout( new GridLayout(2, false) );
- table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 3));
- add.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- remove.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
- }
-
- private void load() {
- String pref = getPreferenceStore().getString(SigilCore.OSGI_INSTALLS);
- if ( pref != null && pref.length() > 0 ) {
- for ( String id : pref.split(",") ) {
- String loc = getPreferenceStore().getString( SigilCore.OSGI_INSTALL_PREFIX + id );
- installs.put( id, new Install( id, loc ) );
- }
- }
-
- viewer.refresh();
-
- if ( !installs.isEmpty() ) {
- String defId = getPreferenceStore().getString( SigilCore.OSGI_DEFAULT_INSTALL_ID );
- if ( defId == null || defId.trim().length() == 0 ) {
- viewer.setCheckedElements( new Object[] { installs.values().iterator().next() } );
- }
- else {
- viewer.setCheckedElements( new Object[] { installs.get( defId ) } );
- }
- }
- }
-
- protected void doSave() {
- // zero out old configs
- String pref = getPreferenceStore().getString(SigilCore.OSGI_INSTALLS);
- if ( pref != null && pref.length() > 0 ) {
- for ( String id : pref.split(",") ) {
- getPreferenceStore().setToDefault( SigilCore.OSGI_INSTALL_PREFIX + id );
- }
- }
-
- // store new configs
- if ( installs.isEmpty() ) {
- getPreferenceStore().setToDefault(SigilCore.OSGI_INSTALLS);
- getPreferenceStore().setToDefault(SigilCore.OSGI_DEFAULT_INSTALL_ID);
- }
- else {
- StringBuffer buf = new StringBuffer();
- for (Install i : installs.values() ) {
- if ( buf.length() > 0 ) {
- buf.append(",");
- }
- buf.append( i.id );
- getPreferenceStore().setValue( SigilCore.OSGI_INSTALL_PREFIX + i.id, i.location );
- }
-
- getPreferenceStore().setValue( SigilCore.OSGI_INSTALLS, buf.toString() );
- Install def = (Install) viewer.getCheckedElements()[0];
- getPreferenceStore().setValue(SigilCore.OSGI_DEFAULT_INSTALL_ID, def.id);
- }
- changed = false;
- }
-
- private boolean isOK() {
- return installs.isEmpty() || viewer.getCheckedElements().length > 0;
- }
-
- private void add() {
- Shell shell = SigilUI.getActiveWorkbenchShell();
- DirectoryDialog dialog = new DirectoryDialog(shell);
- String dir = dialog.open();
- if ( dir != null ) {
- Install install = new Install( UUID.randomUUID().toString(), dir );
- if ( install.getType() == null ) {
- MessageDialog.openError(shell, "Error", "Invalid OSGi install directory" );
- }
- else {
- boolean empty = installs.isEmpty();
-
- installs.put( install.id, install );
- viewer.refresh();
-
- if ( empty ) {
- viewer.setCheckedElements( new Object[] { install } );
- }
-
- checkValid();
- changed = true;
- }
- }
- }
-
- private void checkValid() {
- if ( isOK() ) {
- setErrorMessage(null);
- setValid(true);
- }
- else {
- setErrorMessage("Missing default OSGi install");
- setValid(false);
- }
- }
-
- private void remove() {
- IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
- Install i = (Install) sel.getFirstElement();
- boolean def = viewer.getChecked(i);
- installs.remove(i.id);
- viewer.refresh();
- if ( def && installs.size() > 0 ) {
- viewer.setCheckedElements( new Object[] { installs.values().iterator().next() } );
- }
- checkValid();
- changed = true;
- }
-
- @Override
- protected IPreferenceStore doGetPreferenceStore() {
- return SigilCore.getDefault().getPreferenceStore();
- }
+public class OSGiInstallsPreferencePage extends ProjectDependentPreferencesPage implements IWorkbenchPreferencePage
+{
+
+ private class Install
+ {
+ private String id;
+ private String location;
+ private IOSGiInstallType type;
+
+
+ private Install( String id, String location )
+ {
+ this.id = id;
+ this.location = location;
+ }
+
+
+ private IOSGiInstallType getType()
+ {
+ if ( type == null )
+ {
+ type = SigilCore.getInstallManager().findInstallType( location );
+ }
+ return type;
+ }
+ }
+
+ private HashMap<String, Install> installs = new HashMap<String, Install>();
+ private CheckboxTableViewer viewer;
+ private boolean changed;
+
+
+ public OSGiInstallsPreferencePage()
+ {
+ super( "OSGi Installs" );
+ }
+
+
+ public void init( IWorkbench workbench )
+ {
+ }
+
+
+ @Override
+ protected Control createContents( Composite parent )
+ {
+ Composite control = new Composite( parent, SWT.NONE );
+
+ buildComponents( control );
+
+ load();
+
+ checkValid();
+
+ return control;
+ }
+
+
+ @Override
+ protected boolean isDirty()
+ {
+ return changed;
+ }
+
+
+ private void buildComponents( Composite control )
+ {
+ new Label( control, SWT.NONE ).setText( "Installs:" );
+ new Label( control, SWT.NONE ); // padding
+
+ Table table = new Table( control, SWT.CHECK | SWT.SINGLE | SWT.BORDER );
+
+ Button add = new Button( control, SWT.PUSH );
+ add.setText( "Add" );
+ add.addSelectionListener( new SelectionAdapter()
+ {
+ @Override
+ public void widgetSelected( SelectionEvent e )
+ {
+ add();
+ }
+ } );
+
+ final Button remove = new Button( control, SWT.PUSH );
+ remove.setEnabled( false );
+ remove.setText( "Remove" );
+ remove.addSelectionListener( new SelectionAdapter()
+ {
+ @Override
+ public void widgetSelected( SelectionEvent e )
+ {
+ remove();
+ }
+ } );
+
+ // viewers
+ viewer = new CheckboxTableViewer( table );
+ viewer.setContentProvider( new DefaultTableProvider()
+ {
+ public Object[] getElements( Object inputElement )
+ {
+ return toArray( inputElement );
+ }
+ } );
+
+ viewer.setLabelProvider( new LabelProvider()
+ {
+ @Override
+ public String getText( Object element )
+ {
+ Install i = ( Install ) element;
+ IOSGiInstallType type = i.getType();
+ if ( type == null )
+ {
+ return "<invalid> [" + i.location + "]";
+ }
+ else
+ {
+ return type.getName() + " " + type.getVersion() + " [" + i.location + "]";
+ }
+ }
+
+
+ @Override
+ public Image getImage( Object element )
+ {
+ Install i = ( Install ) element;
+ IOSGiInstallType type = i.getType();
+
+ if ( type == null )
+ {
+ return null;
+ }
+ else
+ {
+ return type.getIcon();
+ }
+ }
+ } );
+
+ viewer.addSelectionChangedListener( new ISelectionChangedListener()
+ {
+ public void selectionChanged( SelectionChangedEvent event )
+ {
+ boolean enabled = !event.getSelection().isEmpty();
+ remove.setEnabled( enabled );
+ }
+ } );
+
+ viewer.addCheckStateListener( new ICheckStateListener()
+ {
+ public void checkStateChanged( CheckStateChangedEvent event )
+ {
+ if ( event.getChecked() )
+ {
+ changed = true;
+ }
+ viewer.setCheckedElements( new Object[]
+ { event.getElement() } );
+ }
+ } );
+
+ viewer.setInput( installs.values() );
+
+ // layout
+ control.setLayout( new GridLayout( 2, false ) );
+ table.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 1, 3 ) );
+ add.setLayoutData( new GridData( SWT.FILL, SWT.FILL, false, false ) );
+ remove.setLayoutData( new GridData( SWT.FILL, SWT.FILL, false, false ) );
+ }
+
+
+ private void load()
+ {
+ String pref = getPreferenceStore().getString( SigilCore.OSGI_INSTALLS );
+ if ( pref != null && pref.length() > 0 )
+ {
+ for ( String id : pref.split( "," ) )
+ {
+ String loc = getPreferenceStore().getString( SigilCore.OSGI_INSTALL_PREFIX + id );
+ installs.put( id, new Install( id, loc ) );
+ }
+ }
+
+ viewer.refresh();
+
+ if ( !installs.isEmpty() )
+ {
+ String defId = getPreferenceStore().getString( SigilCore.OSGI_DEFAULT_INSTALL_ID );
+ if ( defId == null || defId.trim().length() == 0 )
+ {
+ viewer.setCheckedElements( new Object[]
+ { installs.values().iterator().next() } );
+ }
+ else
+ {
+ viewer.setCheckedElements( new Object[]
+ { installs.get( defId ) } );
+ }
+ }
+ }
+
+
+ protected void doSave()
+ {
+ // zero out old configs
+ String pref = getPreferenceStore().getString( SigilCore.OSGI_INSTALLS );
+ if ( pref != null && pref.length() > 0 )
+ {
+ for ( String id : pref.split( "," ) )
+ {
+ getPreferenceStore().setToDefault( SigilCore.OSGI_INSTALL_PREFIX + id );
+ }
+ }
+
+ // store new configs
+ if ( installs.isEmpty() )
+ {
+ getPreferenceStore().setToDefault( SigilCore.OSGI_INSTALLS );
+ getPreferenceStore().setToDefault( SigilCore.OSGI_DEFAULT_INSTALL_ID );
+ }
+ else
+ {
+ StringBuffer buf = new StringBuffer();
+ for ( Install i : installs.values() )
+ {
+ if ( buf.length() > 0 )
+ {
+ buf.append( "," );
+ }
+ buf.append( i.id );
+ getPreferenceStore().setValue( SigilCore.OSGI_INSTALL_PREFIX + i.id, i.location );
+ }
+
+ getPreferenceStore().setValue( SigilCore.OSGI_INSTALLS, buf.toString() );
+ Install def = ( Install ) viewer.getCheckedElements()[0];
+ getPreferenceStore().setValue( SigilCore.OSGI_DEFAULT_INSTALL_ID, def.id );
+ }
+ changed = false;
+ }
+
+
+ private boolean isOK()
+ {
+ return installs.isEmpty() || viewer.getCheckedElements().length > 0;
+ }
+
+
+ private void add()
+ {
+ Shell shell = SigilUI.getActiveWorkbenchShell();
+ DirectoryDialog dialog = new DirectoryDialog( shell );
+ String dir = dialog.open();
+ if ( dir != null )
+ {
+ Install install = new Install( UUID.randomUUID().toString(), dir );
+ if ( install.getType() == null )
+ {
+ MessageDialog.openError( shell, "Error", "Invalid OSGi install directory" );
+ }
+ else
+ {
+ boolean empty = installs.isEmpty();
+
+ installs.put( install.id, install );
+ viewer.refresh();
+
+ if ( empty )
+ {
+ viewer.setCheckedElements( new Object[]
+ { install } );
+ }
+
+ checkValid();
+ changed = true;
+ }
+ }
+ }
+
+
+ private void checkValid()
+ {
+ if ( isOK() )
+ {
+ setErrorMessage( null );
+ setValid( true );
+ }
+ else
+ {
+ setErrorMessage( "Missing default OSGi install" );
+ setValid( false );
+ }
+ }
+
+
+ private void remove()
+ {
+ IStructuredSelection sel = ( IStructuredSelection ) viewer.getSelection();
+ Install i = ( Install ) sel.getFirstElement();
+ boolean def = viewer.getChecked( i );
+ installs.remove( i.id );
+ viewer.refresh();
+ if ( def && installs.size() > 0 )
+ {
+ viewer.setCheckedElements( new Object[]
+ { installs.values().iterator().next() } );
+ }
+ checkValid();
+ changed = true;
+ }
+
+
+ @Override
+ protected IPreferenceStore doGetPreferenceStore()
+ {
+ return SigilCore.getDefault().getPreferenceStore();
+ }
}