Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/views/FactoriesItemProvider.java')
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/views/FactoriesItemProvider.java147
1 files changed, 147 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/views/FactoriesItemProvider.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/views/FactoriesItemProvider.java
new file mode 100644
index 0000000000..aa4c2c07d0
--- /dev/null
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/views/FactoriesItemProvider.java
@@ -0,0 +1,147 @@
+/***************************************************************************
+ * Copyright (c) 2004-2007 Eike Stepper, Germany.
+ * 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:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.ui.views;
+
+import org.eclipse.net4j.container.internal.ui.bundle.SharedIcons;
+import org.eclipse.net4j.util.registry.IRegistry;
+import org.eclipse.net4j.util.registry.IRegistryEvent;
+
+import org.eclipse.swt.graphics.Image;
+
+import java.text.MessageFormat;
+import java.util.Collection;
+
+public class FactoriesItemProvider extends ItemProvider<Container> implements IRegistryListener
+{
+ private IRegistry[] registries = new IRegistry[3];
+
+ public FactoriesItemProvider()
+ {
+ }
+
+ public Object getParent(Object child)
+ {
+ if (child instanceof IRegistry)
+ {
+ return getInput();
+ }
+
+ if (child instanceof IAcceptorFactory)
+ {
+ return registries[1];
+ }
+
+ if (child instanceof IConnectorFactory)
+ {
+ return registries[2];
+ }
+
+ if (child instanceof IProtocolFactory)
+ {
+ return registries[3];
+ }
+
+ return null;
+ }
+
+ public Object[] getChildren(Object parent)
+ {
+ if (parent == getInput())
+ {
+ return registries;
+ }
+
+ if (parent instanceof IRegistry)
+ {
+ Collection values = ((IRegistry)parent).values();
+ return values.toArray(new Object[values.size()]);
+ }
+
+ return NO_CHILDREN;
+ }
+
+ public void notifyRegistryEvent(IRegistryEvent event)
+ {
+ refreshViewer(false);
+ }
+
+ @Override
+ public String getText(Object obj)
+ {
+ if (obj == getInput().getAcceptorFactoryRegistry())
+ {
+ return "Acceptor Factories";
+ }
+
+ if (obj == getInput().getConnectorFactoryRegistry())
+ {
+ return "Connector Factories";
+ }
+
+ if (obj == getInput().getProtocolFactoryRegistry())
+ {
+ return "Protocol Factories";
+ }
+
+ if (obj instanceof IAcceptorFactory)
+ {
+ IAcceptorFactory factory = (IAcceptorFactory)obj;
+ return MessageFormat.format("{0} = {1}", factory.getType(), factory.getClass().getName());
+ }
+
+ if (obj instanceof IConnectorFactory)
+ {
+ IConnectorFactory factory = (IConnectorFactory)obj;
+ return MessageFormat.format("{0} = {1}", factory.getType(), factory.getClass().getName());
+ }
+
+ if (obj instanceof IProtocolFactory)
+ {
+ IProtocolFactory factory = (IProtocolFactory)obj;
+ return MessageFormat.format("{0} {1} = {2}", factory.getProtocolID(), factory.getLocations(), factory.getClass()
+ .getName());
+ }
+
+ return super.getText(obj);
+ }
+
+ @Override
+ public Image getImage(Object obj)
+ {
+ if (obj instanceof IRegistry)
+ {
+ return SharedIcons.OBJ_FOLDER.createImage();
+ }
+
+ return SharedIcons.OBJ_FACTORY.createImage();
+ }
+
+ @Override
+ protected void connectInput(Container input)
+ {
+ registries[0] = input.getAcceptorFactoryRegistry();
+ registries[0].addRegistryListener(this);
+ registries[1] = input.getConnectorFactoryRegistry();
+ registries[1].addRegistryListener(this);
+ registries[2] = input.getProtocolFactoryRegistry();
+ registries[2].addRegistryListener(this);
+ }
+
+ @Override
+ protected void disconnectInput(Container input)
+ {
+ for (int i = 0; i < registries.length; i++)
+ {
+ registries[i].removeRegistryListener(this);
+ registries[i] = null;
+ }
+ }
+} \ No newline at end of file

Back to the top