Author: adietish
Date: 2010-12-03 14:03:45 -0500 (Fri, 03 Dec 2010)
New Revision: 27162
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/AbstractCloudElementViewLabelAndContentProvider.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceViewLabelAndContentProvider.java
Log:
[JBIDE-7688] provide common superclass for ImageViewContentAndLabelProvider and
InstanceViewContentAndLabelProvider
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/AbstractCloudElementViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/AbstractCloudElementViewLabelAndContentProvider.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/AbstractCloudElementViewLabelAndContentProvider.java 2010-12-03
19:03:45 UTC (rev 27162)
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * 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;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.jface.viewers.BaseLabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.widgets.Display;
+import org.jboss.tools.deltacloud.core.DeltaCloud;
+import org.jboss.tools.deltacloud.core.DeltaCloudException;
+import org.jboss.tools.deltacloud.core.DeltaCloudImage;
+import org.jboss.tools.deltacloud.core.ICloudElementFilter;
+import org.jboss.tools.deltacloud.core.IDeltaCloudElement;
+import org.jboss.tools.deltacloud.ui.ErrorUtils;
+
+/**
+ * @author André Dietisheim
+ */
+public abstract class AbstractCloudElementViewLabelAndContentProvider<CLOUDELEMENT
extends IDeltaCloudElement> extends
+ BaseLabelProvider implements ITableContentAndLabelProvider {
+
+ private DeltaCloud cloud;
+ private Collection<CLOUDELEMENT> cloudElements;
+ private ICloudElementFilter<CLOUDELEMENT> localFilter;
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ if (cloudElements == null) {
+ return new DeltaCloudImage[] {};
+ }
+ return cloudElements.toArray();
+ }
+
+ public void setFilter(ICloudElementFilter<CLOUDELEMENT> filter) {
+ this.localFilter = filter;
+ }
+
+ @Override
+ public void dispose() {
+ this.cloud = null;
+ this.cloudElements = null;
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput != null) {
+ try {
+ Assert.isLegal(newInput instanceof DeltaCloud);
+ this.cloud = (DeltaCloud) newInput;
+ this.cloudElements = filter(cloud);
+ } catch (DeltaCloudException e) {
+ this.cloudElements = Collections.emptyList();
+ // TODO: internationalize strings
+ ErrorUtils.handleError(
+ "Error",
+ "Could not display elements for cloud " + cloud.getName(),
+ e, Display.getDefault().getActiveShell());
+ }
+ }
+ }
+
+ protected Collection<CLOUDELEMENT> filter(DeltaCloud cloud) throws
DeltaCloudException {
+ if (cloud == null) {
+ return null;
+ }
+
+ ICloudElementFilter<CLOUDELEMENT> filter = null;
+ filter = getCloudFilter(cloud);
+
+ if (filter == null) {
+ return Arrays.asList(getCloudElements(cloud));
+ }
+
+ return filter.filter(getCloudElements(cloud));
+ }
+
+ private ICloudElementFilter<CLOUDELEMENT> getFilter(DeltaCloud cloud) {
+ if (localFilter != null) {
+ return localFilter;
+ } else {
+ return getFilter(cloud);
+ }
+ }
+
+ protected abstract ICloudElementFilter<CLOUDELEMENT> getCloudFilter(DeltaCloud
cloud);
+
+ protected abstract CLOUDELEMENT[] getCloudElements(DeltaCloud cloud) throws
DeltaCloudException;
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/AbstractCloudElementViewLabelAndContentProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java 2010-12-03
18:59:05 UTC (rev 27161)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/ImageViewLabelAndContentProvider.java 2010-12-03
19:03:45 UTC (rev 27162)
@@ -10,30 +10,22 @@
*******************************************************************************/
package org.jboss.tools.deltacloud.ui.views;
-import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
-import org.eclipse.jface.viewers.BaseLabelProvider;
-import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
import org.jboss.tools.deltacloud.core.DeltaCloud;
+import org.jboss.tools.deltacloud.core.DeltaCloudException;
import org.jboss.tools.deltacloud.core.DeltaCloudImage;
-import org.jboss.tools.deltacloud.core.IImageFilter;
-import org.jboss.tools.deltacloud.ui.ErrorUtils;
+import org.jboss.tools.deltacloud.core.ICloudElementFilter;
/**
* @author Jeff Johnston
* @author André Dietisheim
*/
-public class ImageViewLabelAndContentProvider extends BaseLabelProvider implements
ITableContentAndLabelProvider {
+public class ImageViewLabelAndContentProvider extends
AbstractCloudElementViewLabelAndContentProvider<DeltaCloudImage> implements
ITableContentAndLabelProvider {
- private DeltaCloud cloud;
- private IImageFilter localFilter;
- private DeltaCloudImage[] images = new DeltaCloudImage[] {};
-
public enum Column {
NAME(0, 20),
ID(1, 20),
@@ -73,69 +65,6 @@
};
@Override
- public Object[] getElements(Object inputElement) {
- if (images == null) {
- return new DeltaCloudImage[] {};
- }
- return images;
- }
-
- @Override
- public void dispose() {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (newInput != null) {
- if (newInput instanceof DeltaCloud) {
- this.cloud = (DeltaCloud) newInput;
- }
- this.images = filter(cloud, getImages(newInput));
- }
- }
-
- private DeltaCloudImage[] getImages(Object newInput) {
- DeltaCloudImage[] images = new DeltaCloudImage[] {};
- if (newInput instanceof DeltaCloudImage[]) {
- images = ((DeltaCloudImage[]) newInput);
- } else if (newInput instanceof DeltaCloud) {
- cloud = (DeltaCloud) newInput;
- try {
- return cloud.getImages();
- } catch (Exception e) {
- ErrorUtils.handleError(
- "Error",
- "Could not display images for cloud " + cloud.getName(),
- e, Display.getDefault().getActiveShell());
- }
-
- }
- return images;
- }
-
- // Allow override of filter for Finding Images
- public void setFilter(IImageFilter filter) {
- this.localFilter = filter;
- }
-
- private DeltaCloudImage[] filter(DeltaCloud cloud, DeltaCloudImage[] input) {
- ArrayList<DeltaCloudImage> array = new ArrayList<DeltaCloudImage>();
- IImageFilter f = localFilter;
- if (localFilter == null && cloud != null) {
- f = cloud.getImageFilter();
- }
- for (int i = 0; i < input.length; ++i) {
- DeltaCloudImage image = input[i];
- if (f != null && f.isVisible(image)) {
- array.add(image);
- }
- }
- return array.toArray(new DeltaCloudImage[array.size()]);
- }
-
- @Override
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
@@ -157,4 +86,13 @@
return "";
}
+ protected ICloudElementFilter<DeltaCloudImage> getCloudFilter(DeltaCloud cloud) {
+ return cloud.getImageFilter();
+ }
+
+ @Override
+ protected DeltaCloudImage[] getCloudElements(DeltaCloud cloud) throws
DeltaCloudException {
+ return cloud.getImages();
+ }
+
}
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceViewLabelAndContentProvider.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceViewLabelAndContentProvider.java 2010-12-03
18:59:05 UTC (rev 27161)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/deltacloud/ui/views/InstanceViewLabelAndContentProvider.java 2010-12-03
19:03:45 UTC (rev 27162)
@@ -10,32 +10,26 @@
*******************************************************************************/
package org.jboss.tools.deltacloud.ui.views;
-import java.util.ArrayList;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
-import org.eclipse.jface.viewers.BaseLabelProvider;
-import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
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.IInstanceFilter;
-import org.jboss.tools.deltacloud.ui.ErrorUtils;
+import org.jboss.tools.deltacloud.core.ICloudElementFilter;
import org.jboss.tools.deltacloud.ui.SWTImagesFactory;
/**
* @author Jeff Jonhston
* @author Andre Dietisheim
*/
-public class InstanceViewLabelAndContentProvider extends BaseLabelProvider implements
ITableContentAndLabelProvider {
+public class InstanceViewLabelAndContentProvider extends
+ AbstractCloudElementViewLabelAndContentProvider<DeltaCloudInstance> implements
ITableContentAndLabelProvider {
- private DeltaCloud cloud;
- private DeltaCloudInstance[] instances = new DeltaCloudInstance[]{};
-
public enum Column {
NAME(0, 20),
ID(1, 20),
@@ -75,40 +69,6 @@
};
@Override
- public Object[] getElements(Object inputElement) {
- return instances;
- }
-
- @Override
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if (newInput != null) {
- if (newInput instanceof DeltaCloudInstance[]) {
- instances = filter((DeltaCloudInstance[]) newInput);
- } else if (newInput instanceof DeltaCloud) {
- cloud = (DeltaCloud) newInput;
- try {
- instances = filter(cloud.getInstances());
- } catch (Exception e) {
- // TODO internationalize strings
- ErrorUtils.handleError("Error", "Could not display instances for
cloud " + cloud.getName(),
- e, Display.getDefault().getActiveShell());
- }
- }
- }
- }
-
- private DeltaCloudInstance[] filter(DeltaCloudInstance[] input) {
- ArrayList<DeltaCloudInstance> array = new ArrayList<DeltaCloudInstance>();
- IInstanceFilter f = cloud.getInstanceFilter();
- for (int i = 0; i < input.length; ++i) {
- DeltaCloudInstance instance = input[i];
- if (f.isVisible(instance))
- array.add(instance);
- }
- return array.toArray(new DeltaCloudInstance[array.size()]);
- }
-
- @Override
public Image getColumnImage(Object element, int columnIndex) {
Column c = Column.getColumn(columnIndex);
DeltaCloudInstance i = (DeltaCloudInstance) element;
@@ -156,4 +116,13 @@
public void dispose() {
}
+ protected ICloudElementFilter<DeltaCloudInstance> getCloudFilter(DeltaCloud cloud)
{
+ return cloud.getInstanceFilter();
+ }
+
+ @Override
+ protected DeltaCloudInstance[] getCloudElements(DeltaCloud cloud) throws
DeltaCloudException {
+ return cloud.getInstances();
+ }
+
}