Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/RepositoryConnectorUiExtensionReader.java')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/RepositoryConnectorUiExtensionReader.java142
1 files changed, 96 insertions, 46 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/RepositoryConnectorUiExtensionReader.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/RepositoryConnectorUiExtensionReader.java
index fddc012d4..58bc60bbc 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/RepositoryConnectorUiExtensionReader.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/RepositoryConnectorUiExtensionReader.java
@@ -30,6 +30,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.commons.ui.CommonImages;
import org.eclipse.mylyn.internal.tasks.core.util.ContributorBlackList;
+import org.eclipse.mylyn.internal.tasks.ui.BrandManager;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.spi.RepositoryConnectorBranding;
@@ -100,53 +101,31 @@ public class RepositoryConnectorUiExtensionReader {
RepositoryConnectorBranding branding = loadAdapter(connector, RepositoryConnectorBranding.class);
if (branding != null) {
- InputStream brandingImageData = branding.getBrandingImageData();
- if (brandingImageData != null) {
- try {
- TasksUiPlugin.getDefault().addBrandingIcon(connector.getConnectorKind(),
- getImage(brandingImageData));
- } finally {
- closeQuietly(brandingImageData);
- }
- }
- InputStream overlayImageData = branding.getOverlayImageData();
- if (overlayImageData != null) {
- try {
- TasksUiPlugin.getDefault().addOverlayIcon(connector.getConnectorKind(),
- getImageDescriptor(overlayImageData));
- } finally {
- closeQuietly(brandingImageData);
- }
- }
- }
- }
-
- private void closeQuietly(InputStream in) {
- try {
- in.close();
- } catch (IOException e) {
- // ignore
+ addDefaultImageData(connector, branding);
+ addBranding(connector.getConnectorKind(), branding);
}
}
- @SuppressWarnings("unchecked")
- public <T> T loadAdapter(final AbstractRepositoryConnector connector, Class<T> klass) {
- T adapter = null;
- if (connector instanceof IAdaptable) {
- adapter = (T) ((IAdaptable) connector).getAdapter(klass);
+ protected void addDefaultImageData(final AbstractRepositoryConnector connector,
+ RepositoryConnectorBranding branding) throws IOException {
+ InputStream brandingImageData = branding.getBrandingImageData();
+ if (brandingImageData != null) {
+ try {
+ ((BrandManager) TasksUiPlugin.getDefault().getBrandManager()).addDefaultBrandingIcon(
+ connector.getConnectorKind(), getImage(brandingImageData));
+ } finally {
+ closeQuietly(brandingImageData);
+ }
}
- if (adapter == null) {
- adapter = (T) Platform.getAdapterManager().loadAdapter(connector, klass.getName());
+ InputStream overlayImageData = branding.getOverlayImageData();
+ if (overlayImageData != null) {
+ try {
+ ((BrandManager) TasksUiPlugin.getDefault().getBrandManager()).addDefaultOverlayIcon(
+ connector.getConnectorKind(), getImageDescriptor(overlayImageData));
+ } finally {
+ closeQuietly(brandingImageData);
+ }
}
- return adapter;
- }
-
- private ImageDescriptor getImageDescriptor(InputStream in) {
- return ImageDescriptor.createFromImageData(new ImageData(in));
- }
-
- private Image getImage(InputStream in) {
- return CommonImages.getImage(getImageDescriptor(in));
}
@Override
@@ -157,6 +136,70 @@ public class RepositoryConnectorUiExtensionReader {
});
}
+ protected void addBranding(final String connectorKind, RepositoryConnectorBranding branding) throws IOException {
+ BrandManager brandManager = (BrandManager) TasksUiPlugin.getDefault().getBrandManager();
+ for (String brand : branding.getBrands()) {
+ if (brand == null) {
+ continue;
+ }
+ try {
+ String connectorLabel = branding.getConnectorLabel(brand);
+ if (connectorLabel != null) {
+ brandManager.addConnectorLabel(connectorKind, brand, connectorLabel);
+ }
+
+ InputStream brandingImageData = branding.getBrandingImageData(brand);
+ if (brandingImageData != null) {
+ try {
+ brandManager.addBrandingIcon(connectorKind, brand, getImage(brandingImageData));
+ } finally {
+ closeQuietly(brandingImageData);
+ }
+ }
+
+ InputStream overlayImageData = branding.getOverlayImageData(brand);
+ if (overlayImageData != null) {
+ try {
+ brandManager.addOverlayIcon(connectorKind, brand, getImageDescriptor(overlayImageData));
+ } finally {
+ closeQuietly(brandingImageData);
+ }
+ }
+ } catch (Exception e) {
+ StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, NLS.bind(
+ "Loading of brand '{0}' for kind '{1}' failed.", brand, connectorKind), e)); //$NON-NLS-1$
+ }
+ }
+ }
+
+ private void closeQuietly(InputStream in) {
+ try {
+ in.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T loadAdapter(final AbstractRepositoryConnector connector, Class<T> klass) {
+ T adapter = null;
+ if (connector instanceof IAdaptable) {
+ adapter = (T) ((IAdaptable) connector).getAdapter(klass);
+ }
+ if (adapter == null) {
+ adapter = (T) Platform.getAdapterManager().loadAdapter(connector, klass.getName());
+ }
+ return adapter;
+ }
+
+ private ImageDescriptor getImageDescriptor(InputStream in) {
+ return ImageDescriptor.createFromImageData(new ImageData(in));
+ }
+
+ private Image getImage(InputStream in) {
+ return CommonImages.getImage(getImageDescriptor(in));
+ }
+
private void registerFromExtensionPoint() {
IExtensionPoint repositoriesExtensionPoint = registry.getExtensionPoint(EXTENSION_REPOSITORIES);
IExtension[] repositoryExtensions = repositoriesExtensionPoint.getExtensions();
@@ -177,7 +220,8 @@ public class RepositoryConnectorUiExtensionReader {
Object connectorUiObject = element.createExecutableExtension(ATTR_CLASS);
if (connectorUiObject instanceof AbstractRepositoryConnectorUi) {
AbstractRepositoryConnectorUi connectorUi = (AbstractRepositoryConnectorUi) connectorUiObject;
- if (TasksUiPlugin.getConnector(connectorUi.getConnectorKind()) != null) {
+ AbstractRepositoryConnector connector = TasksUiPlugin.getConnector(connectorUi.getConnectorKind());
+ if (connector != null) {
TasksUiPlugin.getDefault().addRepositoryConnectorUi(connectorUi);
String iconPath = element.getAttribute(ATTR_BRANDING_ICON);
@@ -185,8 +229,8 @@ public class RepositoryConnectorUiExtensionReader {
ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
element.getContributor().getName(), iconPath);
if (descriptor != null) {
- TasksUiPlugin.getDefault().addBrandingIcon(connectorUi.getConnectorKind(),
- CommonImages.getImage(descriptor));
+ ((BrandManager) TasksUiPlugin.getDefault().getBrandManager()).addDefaultBrandingIcon(
+ connectorUi.getConnectorKind(), CommonImages.getImage(descriptor));
}
}
String overlayIconPath = element.getAttribute(ATTR_OVERLAY_ICON);
@@ -194,9 +238,15 @@ public class RepositoryConnectorUiExtensionReader {
ImageDescriptor descriptor = AbstractUIPlugin.imageDescriptorFromPlugin(
element.getContributor().getName(), overlayIconPath);
if (descriptor != null) {
- TasksUiPlugin.getDefault().addOverlayIcon(connectorUi.getConnectorKind(), descriptor);
+ ((BrandManager) TasksUiPlugin.getDefault().getBrandManager()).addDefaultOverlayIcon(
+ connectorUi.getConnectorKind(), descriptor);
}
}
+
+ RepositoryConnectorBranding branding = loadAdapter(connector, RepositoryConnectorBranding.class);
+ if (branding != null) {
+ addBranding(connector.getConnectorKind(), branding);
+ }
} else {
StatusHandler.log(new Status(
IStatus.ERROR,

Back to the top