Author: adietish
Date: 2011-01-17 13:49:35 -0500 (Mon, 17 Jan 2011)
New Revision: 28313
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/Columns.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudImageColumns.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudInstanceColumns.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractSelectableCloudViewLabelAndContentProvider.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementTableView.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementViewLabelAndContentProvider.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ITableContentAndLabelProvider.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageView.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageViewLabelAndContentProvider.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceView.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceViewLabelAndContentProvider.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePage.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePageLabelAndContentProvider.java
Log:
[JBIDE-8134][JBIDE-8135]
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/Columns.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/Columns.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/Columns.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.deltacloud.ui.views;
+
+import org.eclipse.swt.graphics.Image;
+
+
+/**
+ * @author Jeff Johnston
+ * @author André Dietisheim
+ */
+public class Columns<MODEL> {
+
+ public abstract static class Column<MODEL> {
+
+ private String name;
+ private int weight;
+
+ public Column(String name, int weight) {
+ this.name = name;
+ this.weight = weight;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getWeight() {
+ return weight;
+ }
+
+ public abstract String getColumnText(MODEL model);
+
+ public Image getColumnImage(MODEL model) {
+ return null;
+ }
+ }
+
+ private Column<MODEL>[] columns;
+
+ public Columns(Column<MODEL>... columns) {
+ this.columns = columns;
+ }
+
+ public Column<MODEL>[] getColumns() {
+ return columns;
+ }
+
+ public Column<MODEL> getColumn(int columnIndex) {
+ if (columns == null || columnIndex < 0 || columnIndex >= columns.length) {
+ return null;
+ }
+ return columns[columnIndex];
+ }
+
+ public int getSize() {
+ if (columns == null) {
+ return 0;
+ }
+ return columns.length;
+ }
+}
\ No newline at end of file
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/Columns.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudImageColumns.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudImageColumns.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudImageColumns.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.deltacloud.ui.views;
+
+import org.jboss.tools.deltacloud.core.DeltaCloudImage;
+
+/**
+ * @author André Dietisheim
+ */
+public class DeltaCloudImageColumns extends Columns<DeltaCloudImage> {
+
+ @SuppressWarnings("unchecked")
+ public DeltaCloudImageColumns() {
+ super(
+ new Column<DeltaCloudImage>("NAME", 20) {
+
+ @Override
+ public String getColumnText(DeltaCloudImage image) {
+ return image.getName();
+ }
+ },
+ new Column<DeltaCloudImage>("ID", 20) {
+
+ @Override
+ public String getColumnText(DeltaCloudImage image) {
+ return image.getId();
+ }
+ },
+ new Column<DeltaCloudImage>("ARCH", 20) {
+
+ @Override
+ public String getColumnText(DeltaCloudImage image) {
+ return image.getArchitecture();
+ }
+ },
+ new Column<DeltaCloudImage>("DESC", 40) {
+ @Override
+ public String getColumnText(DeltaCloudImage image) {
+ return image.getDescription();
+ }
+ });
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudImageColumns.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudInstanceColumns.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudInstanceColumns.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudInstanceColumns.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.deltacloud.ui.views;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.jboss.tools.deltacloud.core.DeltaCloudInstance;
+import org.jboss.tools.deltacloud.core.DeltaCloudInstance.State;
+import org.jboss.tools.deltacloud.ui.SWTImagesFactory;
+
+/**
+ * @author André Dietisheim
+ */
+public class DeltaCloudInstanceColumns extends Columns<DeltaCloudInstance> {
+
+ @SuppressWarnings("unchecked")
+ public DeltaCloudInstanceColumns() {
+ super(
+ new Column<DeltaCloudInstance>("NAME", 20) {
+
+ @Override
+ public String getColumnText(DeltaCloudInstance image) {
+ return image.getName();
+ }
+ },
+ new Column<DeltaCloudInstance>("ALIAS", 20) {
+
+ @Override
+ public String getColumnText(DeltaCloudInstance image) {
+ return image.getId();
+ }
+ },
+ new Column<DeltaCloudInstance>("STATUS", 20) {
+
+ @Override
+ public Image getColumnImage(DeltaCloudInstance instance) {
+ State state = instance.getState();
+ if (DeltaCloudInstance.State.STOPPED.equals(state)) {
+ return SWTImagesFactory.get(SWTImagesFactory.IMG_STOPPED);
+ } else if (DeltaCloudInstance.State.RUNNING.equals(state)) {
+ return SWTImagesFactory.get(SWTImagesFactory.IMG_RUNNING);
+ } else if (DeltaCloudInstance.State.BOGUS.equals(state)) {
+ return PlatformUI.getWorkbench().getSharedImages().
+ getImage(ISharedImages.IMG_DEC_FIELD_WARNING);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public String getColumnText(DeltaCloudInstance image) {
+ return image.getState().toString();
+ }
+ },
+ new Column<DeltaCloudInstance>("HOSTNAME", 40) {
+ @Override
+ public String getColumnText(DeltaCloudInstance image) {
+ return image.getHostName();
+ }
+ });
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/DeltaCloudInstanceColumns.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementTableView.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementTableView.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementTableView.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -52,6 +52,8 @@
import org.jboss.tools.deltacloud.ui.Activator;
import org.jboss.tools.deltacloud.ui.ErrorUtils;
import org.jboss.tools.deltacloud.ui.views.CVMessages;
+import org.jboss.tools.deltacloud.ui.views.Columns;
+import org.jboss.tools.deltacloud.ui.views.Columns.Column;
import org.jboss.tools.internal.deltacloud.ui.preferences.StringPreferenceValue;
import org.jboss.tools.internal.deltacloud.ui.utils.UIUtils;
@@ -227,10 +229,10 @@
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
- ITableContentAndLabelProvider provider = getContentAndLabelProvider();
+ ITableContentAndLabelProvider<CLOUDELEMENT> provider =
getContentAndLabelProvider();
viewer.setContentProvider(provider);
viewer.setLabelProvider(provider);
- createColumns(tableLayout, table);
+ createColumns(provider, tableLayout, table);
viewer.setComparator(new TableViewerColumnComparator());
table.setSortDirection(SWT.NONE);
@@ -238,8 +240,8 @@
return viewer;
}
- protected abstract ITableContentAndLabelProvider getContentAndLabelProvider();
-
+ protected abstract ITableContentAndLabelProvider<CLOUDELEMENT>
getContentAndLabelProvider();
+
private void setViewerInput(DeltaCloud cloud) {
viewer.setInput(cloud);
}
@@ -304,15 +306,16 @@
return clouds[cloudIndex];
}
- private void createColumns(TableColumnLayout tableLayout, Table table) {
- for (int i = 0; i < InstanceViewLabelAndContentProvider.Column.getSize(); ++i) {
- InstanceViewLabelAndContentProvider.Column c =
- InstanceViewLabelAndContentProvider.Column.getColumn(i);
+ private void createColumns(ITableContentAndLabelProvider<CLOUDELEMENT> provider,
TableColumnLayout tableLayout, Table table) {
+ Columns<CLOUDELEMENT> columns = provider.getColumns();
+
+ for (int i = 0; i < columns.getSize(); ++i) {
+ Column<CLOUDELEMENT> c = columns.getColumn(i);
TableColumn tc = new TableColumn(table, SWT.NONE);
if (i == 0) {
table.setSortColumn(tc);
}
- tc.setText(CVMessages.getString(c.name()));
+ tc.setText(CVMessages.getString(c.getName()));
tableLayout.setColumnData(tc, new ColumnWeightData(c.getWeight(), true));
tc.addSelectionListener(new ColumnListener(i));
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementViewLabelAndContentProvider.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractCloudElementViewLabelAndContentProvider.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -10,20 +10,11 @@
*******************************************************************************/
package org.jboss.tools.deltacloud.ui.views.cloudelements;
-import java.beans.PropertyChangeListener;
-import java.text.MessageFormat;
-import java.util.Collections;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.BaseLabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.jboss.tools.deltacloud.core.DeltaCloud;
-import org.jboss.tools.deltacloud.core.DeltaCloudException;
-import org.jboss.tools.deltacloud.core.ICloudElementFilter;
+import org.eclipse.swt.graphics.Image;
import org.jboss.tools.deltacloud.core.IDeltaCloudElement;
-import org.jboss.tools.deltacloud.ui.ErrorUtils;
+import org.jboss.tools.deltacloud.ui.views.Columns;
+import org.jboss.tools.deltacloud.ui.views.Columns.Column;
/**
* A common superclass for content- and label-providers that operate on
@@ -33,124 +24,40 @@
* @author Andre Dietisheim
*/
public abstract class AbstractCloudElementViewLabelAndContentProvider<CLOUDELEMENT
extends IDeltaCloudElement> extends
- BaseLabelProvider implements ITableContentAndLabelProvider, PropertyChangeListener {
+ BaseLabelProvider implements ITableContentAndLabelProvider<CLOUDELEMENT> {
- private DeltaCloud currentCloud;
- private ICloudElementFilter<CLOUDELEMENT> localFilter;
- private TableViewer viewer;
+ private Columns<CLOUDELEMENT> columns;
- private AtomicReference<CLOUDELEMENT[]> elementsReference = new
AtomicReference<CLOUDELEMENT[]>();
-
+ @SuppressWarnings("unchecked")
@Override
- public Object[] getElements(Object input) {
- try {
- return filter(getFilter(currentCloud), elementsReference.get());
- } catch (DeltaCloudException e) {
- ErrorUtils.handleError(
- "Error", MessageFormat.format(
- "Could not filter the elements for cloud \"{0}\"",
currentCloud.getName()),
- e, viewer.getControl().getDisplay().getActiveShell());
- return new Object[] {};
+ public String getColumnText(Object element, int columnIndex) {
+ Columns<CLOUDELEMENT> columns = getColumns();
+ Column<CLOUDELEMENT> c = columns.getColumn(columnIndex);
+ if (c == null) {
+ return null;
}
+
+ return c.getColumnText((CLOUDELEMENT) element);
}
+ @SuppressWarnings("unchecked")
@Override
- public void inputChanged(final Viewer viewer, Object oldInput, Object newInput) {
- if (!(newInput instanceof DeltaCloud)) {
- return;
+ public Image getColumnImage(Object element, int columnIndex) {
+ Columns<CLOUDELEMENT> columns = getColumns();
+ Column<CLOUDELEMENT> c = columns.getColumn(columnIndex);
+ if (c == null
+ || c == null) {
+ return null;
}
- Assert.isLegal(viewer instanceof TableViewer);
- this.viewer = (TableViewer) viewer;
- removeListener(currentCloud);
- this.currentCloud = (DeltaCloud) newInput;
- addPropertyChangeListener(currentCloud);
- asyncGetCloudElements(currentCloud);
+ return c.getColumnImage((CLOUDELEMENT) element);
}
- protected void setCloudElements(CLOUDELEMENT[] elements) {
- this.elementsReference.set(elements);
- refreshViewer();
- }
-
- private void refreshViewer() {
- viewer.getControl().getDisplay().asyncExec(new Runnable() {
-
- @Override
- public void run() {
- viewer.refresh();
- }
- });
- }
-
- protected boolean isCurrentCloud(final DeltaCloud cloud) {
- return cloud != null
- && currentCloud != null
- && cloud.getName().equals(currentCloud.getName());
- }
-
- // protected void addToViewer(final CLOUDELEMENT[] cloudElements) {
- // viewer.getControl().getDisplay().asyncExec(new Runnable() {
- //
- // @Override
- // public void run() {
- // try {
- // clearTableViewer();
- // Object[] elements = filter(getFilter(currentCloud), cloudElements);
- // viewer.add(elements);
- // } catch (DeltaCloudException e) {
- // // TODO: internationalize strings
- // ErrorUtils.handleError(
- // "Error", "Could not filter the elements for cloud " +
- // currentCloud.getName(),
- // e, Display.getDefault().getActiveShell());
- //
- // }
- // }
- // });
- // }
-
- public void setFilter(ICloudElementFilter<CLOUDELEMENT> filter) {
- this.localFilter = filter;
- }
-
- private ICloudElementFilter<CLOUDELEMENT> getFilter(DeltaCloud cloud) {
- if (localFilter != null) {
- return localFilter;
- } else {
- return getCloudFilter(cloud);
+ public Columns<CLOUDELEMENT> getColumns() {
+ if (columns == null) {
+ this.columns = createColumns();
}
+ return columns;
}
- protected Object[] filter(ICloudElementFilter<CLOUDELEMENT> filter, CLOUDELEMENT[]
cloudElements)
- throws DeltaCloudException {
- if (cloudElements == null) {
- return new Object[] {};
- }
- if (filter == null) {
- return cloudElements;
- } else {
- return filter.filter(cloudElements).toArray();
- }
- }
-
- @Override
- public void dispose() {
- removeListener(currentCloud);
- }
-
- protected void removeListener(DeltaCloud cloud) {
- if (cloud != null) {
- cloud.removePropertyChangeListener(this);
- }
- }
-
- protected void clearTableViewer() {
- viewer.setInput(Collections.emptyList());
- }
-
- protected abstract ICloudElementFilter<CLOUDELEMENT> getCloudFilter(DeltaCloud
cloud);
-
- protected abstract void asyncGetCloudElements(DeltaCloud cloud);
-
- protected abstract void addPropertyChangeListener(DeltaCloud cloud);
+ protected abstract Columns<CLOUDELEMENT> createColumns();
}
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractSelectableCloudViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractSelectableCloudViewLabelAndContentProvider.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractSelectableCloudViewLabelAndContentProvider.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat Inc..
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ *
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat Incorporated - initial API and implementation
+ *******************************************************************************/
+package org.jboss.tools.deltacloud.ui.views.cloudelements;
+
+import java.beans.PropertyChangeListener;
+import java.text.MessageFormat;
+import java.util.Collections;
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.jboss.tools.deltacloud.core.DeltaCloud;
+import org.jboss.tools.deltacloud.core.DeltaCloudException;
+import org.jboss.tools.deltacloud.core.ICloudElementFilter;
+import org.jboss.tools.deltacloud.core.IDeltaCloudElement;
+import org.jboss.tools.deltacloud.ui.ErrorUtils;
+import org.jboss.tools.deltacloud.ui.views.Columns;
+import org.jboss.tools.deltacloud.ui.views.Columns.Column;
+
+/**
+ * A common superclass for content- and label-providers that operate on
+ * IDeltaCloudElements (currently DeltaCloudImage and DeltaCloudInstance)
+ *
+ * @author Jeff Johnston
+ * @author Andre Dietisheim
+ */
+public abstract class AbstractSelectableCloudViewLabelAndContentProvider<CLOUDELEMENT
extends IDeltaCloudElement> extends
+ AbstractCloudElementViewLabelAndContentProvider<CLOUDELEMENT> implements
PropertyChangeListener {
+
+ private DeltaCloud currentCloud;
+ private ICloudElementFilter<CLOUDELEMENT> localFilter;
+ private TableViewer viewer;
+ private AtomicReference<CLOUDELEMENT[]> elementsReference = new
AtomicReference<CLOUDELEMENT[]>();
+
+ @Override
+ public Object[] getElements(Object input) {
+ try {
+ return filter(getFilter(currentCloud), elementsReference.get());
+ } catch (DeltaCloudException e) {
+ ErrorUtils.handleError(
+ "Error", MessageFormat.format(
+ "Could not filter the elements for cloud \"{0}\"",
currentCloud.getName()),
+ e, viewer.getControl().getDisplay().getActiveShell());
+ return new Object[] {};
+ }
+ }
+
+ @Override
+ public void inputChanged(final Viewer viewer, Object oldInput, Object newInput) {
+ if (!(newInput instanceof DeltaCloud)) {
+ return;
+ }
+ Assert.isLegal(viewer instanceof TableViewer);
+ this.viewer = (TableViewer) viewer;
+ removeListener(currentCloud);
+ this.currentCloud = (DeltaCloud) newInput;
+ addPropertyChangeListener(currentCloud);
+ asyncGetCloudElements(currentCloud);
+ }
+
+ protected void setCloudElements(CLOUDELEMENT[] elements) {
+ this.elementsReference.set(elements);
+ refreshViewer();
+ }
+
+ private void refreshViewer() {
+ viewer.getControl().getDisplay().asyncExec(new Runnable() {
+
+ @Override
+ public void run() {
+ viewer.refresh();
+ }
+ });
+ }
+
+ protected boolean isCurrentCloud(final DeltaCloud cloud) {
+ return cloud != null
+ && currentCloud != null
+ && cloud.getName().equals(currentCloud.getName());
+ }
+
+ public void setFilter(ICloudElementFilter<CLOUDELEMENT> filter) {
+ this.localFilter = filter;
+ }
+
+ private ICloudElementFilter<CLOUDELEMENT> getFilter(DeltaCloud cloud) {
+ if (localFilter != null) {
+ return localFilter;
+ } else {
+ return getCloudFilter(cloud);
+ }
+ }
+
+ protected Object[] filter(ICloudElementFilter<CLOUDELEMENT> filter, CLOUDELEMENT[]
cloudElements)
+ throws DeltaCloudException {
+ if (cloudElements == null) {
+ return new Object[] {};
+ }
+ if (filter == null) {
+ return cloudElements;
+ } else {
+ return filter.filter(cloudElements).toArray();
+ }
+ }
+
+ @Override
+ public void dispose() {
+ removeListener(currentCloud);
+ }
+
+ protected void removeListener(DeltaCloud cloud) {
+ if (cloud != null) {
+ cloud.removePropertyChangeListener(this);
+ }
+ }
+
+ protected void clearTableViewer() {
+ viewer.setInput(Collections.emptyList());
+ }
+
+ protected abstract ICloudElementFilter<CLOUDELEMENT> getCloudFilter(DeltaCloud
cloud);
+
+ protected abstract void asyncGetCloudElements(DeltaCloud cloud);
+
+ protected abstract void addPropertyChangeListener(DeltaCloud cloud);
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ Columns<CLOUDELEMENT> columns = getColumns();
+ Column<CLOUDELEMENT> c = columns.getColumn(columnIndex);
+ if (c == null) {
+ return null;
+ }
+
+ return c.getColumnText((CLOUDELEMENT) element);
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/AbstractSelectableCloudViewLabelAndContentProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ITableContentAndLabelProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ITableContentAndLabelProvider.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ITableContentAndLabelProvider.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -12,10 +12,13 @@
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.jboss.tools.deltacloud.ui.views.Columns;
/**
* @author Andre Dietisheim
*/
-public interface ITableContentAndLabelProvider extends IStructuredContentProvider,
ITableLabelProvider{
+public interface ITableContentAndLabelProvider<MODEL> extends
IStructuredContentProvider, ITableLabelProvider{
+ public Columns<MODEL> getColumns();
+
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageView.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageView.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageView.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -35,7 +35,7 @@
}
@Override
- protected ITableContentAndLabelProvider getContentAndLabelProvider() {
+ protected ITableContentAndLabelProvider<DeltaCloudImage>
getContentAndLabelProvider() {
return new ImageViewLabelAndContentProvider();
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageViewLabelAndContentProvider.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/ImageViewLabelAndContentProvider.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -12,9 +12,6 @@
import java.beans.PropertyChangeEvent;
import java.text.MessageFormat;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -26,74 +23,26 @@
import org.jboss.tools.deltacloud.core.ICloudElementFilter;
import org.jboss.tools.deltacloud.core.job.AbstractCloudElementJob;
import org.jboss.tools.deltacloud.core.job.AbstractCloudElementJob.CLOUDELEMENT;
+import org.jboss.tools.deltacloud.ui.views.Columns;
+import org.jboss.tools.deltacloud.ui.views.DeltaCloudImageColumns;
/**
* @author Jeff Johnston
* @author André Dietisheim
*/
-public class ImageViewLabelAndContentProvider extends
AbstractCloudElementViewLabelAndContentProvider<DeltaCloudImage>
- implements ITableContentAndLabelProvider {
+public class ImageViewLabelAndContentProvider extends
AbstractSelectableCloudViewLabelAndContentProvider<DeltaCloudImage>
+ implements ITableContentAndLabelProvider<DeltaCloudImage> {
- public enum Column {
- NAME(0, 20),
- ID(1, 20),
- ARCH(2, 20),
- DESC(3, 40);
-
- private int column;
- private int weight;
- private static final Map<Integer, Column> lookup = new HashMap<Integer,
Column>();
-
- static {
- for (Column c : EnumSet.allOf(Column.class))
- lookup.put(c.getColumnNumber(), c);
- }
-
- private Column(int column, int weight) {
- this.column = column;
- this.weight = weight;
- }
-
- public int getColumnNumber() {
- return column;
- }
-
- public int getWeight() {
- return weight;
- }
-
- public static Column getColumn(int number) {
- return lookup.get(number);
- }
-
- public static int getSize() {
- return lookup.size();
- }
-
- };
-
@Override
+ public Columns<DeltaCloudImage> createColumns() {
+ return new DeltaCloudImageColumns();
+ }
+
+ @Override
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
- @Override
- public String getColumnText(Object element, int columnIndex) {
- Column c = Column.getColumn(columnIndex);
- DeltaCloudImage i = (DeltaCloudImage) element;
- switch (c) {
- case NAME:
- return i.getName();
- case ID:
- return i.getId();
- case ARCH:
- return i.getArchitecture();
- case DESC:
- return i.getDescription();
- }
- return "";
- }
-
protected ICloudElementFilter<DeltaCloudImage> getCloudFilter(DeltaCloud cloud) {
return cloud.getImageFilter();
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceView.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceView.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceView.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -36,7 +36,7 @@
}
@Override
- protected ITableContentAndLabelProvider getContentAndLabelProvider() {
+ protected ITableContentAndLabelProvider<DeltaCloudInstance>
getContentAndLabelProvider() {
return new InstanceViewLabelAndContentProvider();
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceViewLabelAndContentProvider.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/cloudelements/InstanceViewLabelAndContentProvider.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -12,113 +12,26 @@
import java.beans.PropertyChangeEvent;
import java.text.MessageFormat;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
import org.jboss.tools.deltacloud.core.DeltaCloud;
import org.jboss.tools.deltacloud.core.DeltaCloudException;
import org.jboss.tools.deltacloud.core.DeltaCloudInstance;
import org.jboss.tools.deltacloud.core.ICloudElementFilter;
import org.jboss.tools.deltacloud.core.job.AbstractCloudElementJob;
import org.jboss.tools.deltacloud.core.job.AbstractCloudElementJob.CLOUDELEMENT;
-import org.jboss.tools.deltacloud.ui.SWTImagesFactory;
+import org.jboss.tools.deltacloud.ui.views.Columns;
+import org.jboss.tools.deltacloud.ui.views.DeltaCloudInstanceColumns;
/**
* @author Jeff Jonhston
* @author Andre Dietisheim
*/
public class InstanceViewLabelAndContentProvider extends
- AbstractCloudElementViewLabelAndContentProvider<DeltaCloudInstance> implements
ITableContentAndLabelProvider {
+AbstractSelectableCloudViewLabelAndContentProvider<DeltaCloudInstance> implements
ITableContentAndLabelProvider<DeltaCloudInstance> {
- public enum Column {
- NAME(0, 20),
- ID(1, 20),
- STATUS(2, 6),
- HOSTNAME(3, 40);
-
- private int column;
- private int weight;
- private static final Map<Integer, Column> lookup = new HashMap<Integer,
Column>();
-
- static {
- for (Column c : EnumSet.allOf(Column.class))
- lookup.put(c.getColumnNumber(), c);
- }
-
- private Column(int column, int weight) {
- this.column = column;
- this.weight = weight;
- }
-
- public int getColumnNumber() {
- return column;
- }
-
- public int getWeight() {
- return weight;
- }
-
- public static Column getColumn(int number) {
- return lookup.get(number);
- }
-
- public static int getSize() {
- return lookup.size();
- }
-
- };
-
- @Override
- public Image getColumnImage(Object element, int columnIndex) {
- Column c = Column.getColumn(columnIndex);
- DeltaCloudInstance i = (DeltaCloudInstance) element;
- switch (c) {
- case STATUS:
- return getStatusIcon(i.getState());
- default:
- return null;
- }
- }
-
- private Image getStatusIcon(DeltaCloudInstance.State status) {
- if (DeltaCloudInstance.State.STOPPED.equals(status)) {
- return SWTImagesFactory.get(SWTImagesFactory.IMG_STOPPED);
- } else if (DeltaCloudInstance.State.RUNNING.equals(status)) {
- return SWTImagesFactory.get(SWTImagesFactory.IMG_RUNNING);
- } else if (DeltaCloudInstance.State.BOGUS.equals(status)) {
- return PlatformUI.getWorkbench().getSharedImages().
- getImage(ISharedImages.IMG_DEC_FIELD_WARNING);
- } else {
- return null;
- }
- }
-
- @Override
- public String getColumnText(Object element, int columnIndex) {
- Column c = Column.getColumn(columnIndex);
- DeltaCloudInstance i = (DeltaCloudInstance) element;
- if (i != null) {
- switch (c) {
- case NAME:
- return i.getName();
- case ID:
- return i.getId();
- case STATUS:
- return "";
- case HOSTNAME:
- return i.getHostName();
- }
- }
- return "";
- }
-
protected ICloudElementFilter<DeltaCloudInstance> getCloudFilter(DeltaCloud cloud)
{
return cloud.getInstanceFilter();
}
@@ -164,4 +77,9 @@
currentCloud.addPropertyChangeListener(DeltaCloud.PROP_INSTANCES, this);
}
}
+
+ @Override
+ protected Columns<DeltaCloudInstance> createColumns() {
+ return new DeltaCloudInstanceColumns();
+ }
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePage.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePage.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePage.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -47,6 +47,9 @@
import org.jboss.tools.deltacloud.core.job.AbstractCloudElementJob.CLOUDELEMENT;
import org.jboss.tools.deltacloud.ui.SWTImagesFactory;
import org.jboss.tools.deltacloud.ui.views.CVMessages;
+import org.jboss.tools.deltacloud.ui.views.Columns;
+import org.jboss.tools.deltacloud.ui.views.Columns.Column;
+import org.jboss.tools.deltacloud.ui.views.cloudelements.ITableContentAndLabelProvider;
import org.jboss.tools.deltacloud.ui.views.cloudelements.TableViewerColumnComparator;
/**
@@ -216,22 +219,12 @@
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
- FindImagePageLabelAndContentProvider contentProvider = new
FindImagePageLabelAndContentProvider();
- viewer.setContentProvider(contentProvider);
- viewer.setLabelProvider(contentProvider);
+ FindImagePageLabelAndContentProvider provider = new
FindImagePageLabelAndContentProvider();
+ viewer.setContentProvider(provider);
+ viewer.setLabelProvider(provider);
TableViewerColumnComparator comparator = new TableViewerColumnComparator();
viewer.setComparator(comparator);
-
- for (int i = 0; i < FindImagePageLabelAndContentProvider.Column.getSize(); ++i) {
- FindImagePageLabelAndContentProvider.Column c =
- FindImagePageLabelAndContentProvider.Column.getColumn(i);
- TableColumn tc = new TableColumn(table, SWT.NONE);
- if (i == 0)
- table.setSortColumn(tc);
- tc.setText(CVMessages.getString(c.name()));
- tableLayout.setColumnData(tc, new ColumnWeightData(c.getWeight(), true));
- tc.addSelectionListener(new ColumnListener(i, viewer));
- }
+ createColumns(provider, tableLayout, table);
table.setSortDirection(SWT.NONE);
Point p1 = nameLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT);
@@ -300,6 +293,21 @@
validate();
}
+ private void createColumns(ITableContentAndLabelProvider<DeltaCloudImage>
provider, TableColumnLayout tableLayout,
+ Table table) {
+ Columns<DeltaCloudImage> columns = provider.getColumns();
+ for (int i = 0; i < columns.getSize(); ++i) {
+ Column<DeltaCloudImage> c = columns.getColumn(i);
+ TableColumn tc = new TableColumn(table, SWT.NONE);
+ if (i == 0) {
+ table.setSortColumn(tc);
+ }
+ tc.setText(CVMessages.getString(c.getName()));
+ tableLayout.setColumnData(tc, new ColumnWeightData(c.getWeight(), true));
+ tc.addSelectionListener(new ColumnListener(i, viewer));
+ }
+ }
+
private void hookSelection() {
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
@@ -342,4 +350,4 @@
}
});
}
-}
+}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePageLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePageLabelAndContentProvider.java 2011-01-17
18:46:46 UTC (rev 28312)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/FindImagePageLabelAndContentProvider.java 2011-01-17
18:49:35 UTC (rev 28313)
@@ -10,85 +10,28 @@
*******************************************************************************/
package org.jboss.tools.internal.deltacloud.ui.wizards;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.Map;
-
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
import org.jboss.tools.deltacloud.core.DeltaCloud;
import org.jboss.tools.deltacloud.core.DeltaCloudImage;
import org.jboss.tools.deltacloud.core.ICloudElementFilter;
+import org.jboss.tools.deltacloud.ui.views.Columns;
+import org.jboss.tools.deltacloud.ui.views.DeltaCloudImageColumns;
+import
org.jboss.tools.deltacloud.ui.views.cloudelements.AbstractCloudElementViewLabelAndContentProvider;
import org.jboss.tools.deltacloud.ui.views.cloudelements.ITableContentAndLabelProvider;
/**
* @author Jeff Johnston
* @author André Dietisheim
*/
-public class FindImagePageLabelAndContentProvider implements
ITableContentAndLabelProvider {
+public class FindImagePageLabelAndContentProvider extends
AbstractCloudElementViewLabelAndContentProvider<DeltaCloudImage> implements
ITableContentAndLabelProvider<DeltaCloudImage> {
- public enum Column {
- NAME(0, 20),
- ID(1, 20),
- ARCH(2, 20),
- DESC(3, 40);
-
- private int column;
- private int weight;
- private static final Map<Integer, Column> lookup = new HashMap<Integer,
Column>();
-
- static {
- for (Column c : EnumSet.allOf(Column.class))
- lookup.put(c.getColumnNumber(), c);
- }
-
- private Column(int column, int weight) {
- this.column = column;
- this.weight = weight;
- }
-
- public int getColumnNumber() {
- return column;
- }
-
- public int getWeight() {
- return weight;
- }
-
- public static Column getColumn(int number) {
- return lookup.get(number);
- }
-
- public static int getSize() {
- return lookup.size();
- }
-
- };
-
@Override
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
+ public Columns<DeltaCloudImage> createColumns() {
+ return new DeltaCloudImageColumns();
}
- @Override
- public String getColumnText(Object element, int columnIndex) {
- Column c = Column.getColumn(columnIndex);
- DeltaCloudImage i = (DeltaCloudImage) element;
- switch (c) {
- case NAME:
- return i.getName();
- case ID:
- return i.getId();
- case ARCH:
- return i.getArchitecture();
- case DESC:
- return i.getDescription();
- }
- return "";
- }
-
protected ICloudElementFilter<DeltaCloudImage> getCloudFilter(DeltaCloud cloud) {
return cloud.getImageFilter();
}