Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / src / org / w3c / jigadmin / gui / slist / ServerList.java
diff --git a/JMCR-Stable/real-world application/jigsaw/src/org/w3c/jigadmin/gui/slist/ServerList.java b/JMCR-Stable/real-world application/jigsaw/src/org/w3c/jigadmin/gui/slist/ServerList.java
new file mode 100644 (file)
index 0000000..e5ca02d
--- /dev/null
@@ -0,0 +1,156 @@
+// ServerList.java\r
+// $Id: ServerList.java,v 1.1 2010/06/15 12:28:59 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1998.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.jigadmin.gui.slist;\r
+\r
+import java.awt.Insets;\r
+import java.awt.GridLayout;\r
+import java.awt.event.ActionListener;\r
+import java.awt.event.ActionEvent;\r
+\r
+import javax.swing.JPanel;\r
+import javax.swing.BorderFactory;\r
+import javax.swing.JButton;\r
+import javax.swing.ImageIcon;\r
+import javax.swing.AbstractButton;\r
+\r
+import javax.swing.event.EventListenerList;\r
+\r
+import org.w3c.jigadmin.RemoteResourceWrapper;\r
+import org.w3c.jigadmin.gui.Message;\r
+\r
+import org.w3c.jigsaw.admin.RemoteAccessException;\r
+\r
+import org.w3c.tools.widgets.Utilities;\r
+\r
+/**\r
+ * Manage a list of Jigsaw server.\r
+ * @version $Revision: 1.1 $\r
+ * @author  Benoît Mahé (bmahe@w3.org)\r
+ */\r
+public class ServerList extends JPanel {\r
+\r
+    ServerListModelInterface model        = null;\r
+    EventListenerList        listenerList = null;\r
+\r
+    ImageIcon icon = null;\r
+\r
+    /**\r
+     * Our internal ActionListener.\r
+     */\r
+    ActionListener al = new ActionListener() {\r
+       public void actionPerformed(ActionEvent e) {\r
+           fireServerSelectedEvent(e.getActionCommand());\r
+       }\r
+    };\r
+\r
+    /**\r
+     * Get the Server List Model.\r
+     * @return a ServerListModelInterface instance.\r
+     */\r
+    public ServerListModelInterface getModel() {\r
+       return model;\r
+    }\r
+\r
+    /**\r
+     * Add a ServerListListener.\r
+     * @param listener the ServerListListener to add.\r
+     */\r
+    public void addServerListListener(ServerListListener listener) {\r
+       listenerList.add(ServerListListener.class, listener);\r
+    }\r
+\r
+    /**\r
+     * Remove a ServerListListener.\r
+     * @param listener the ServerListListener to remove.\r
+     */\r
+    public void removeServerListListener(ServerListListener listener) {\r
+       listenerList.remove(ServerListListener.class, listener);\r
+    }\r
+\r
+    /**\r
+     * Fire a ServerSelectedEvent for the given server name.\r
+     * @param name the server name.\r
+     */\r
+    protected void fireServerSelectedEvent(String name) {\r
+       RemoteResourceWrapper server = null;\r
+       server = model.getServer(name);\r
+       Object listeners[] = listenerList.getListenerList();\r
+       for (int i = listeners.length-2; i>=0; i-=2) {\r
+           if (listeners[i] == ServerListListener.class) {\r
+               ((ServerListListener)\r
+                listeners[i+1]).serverSelected(name, server);\r
+           }\r
+       }\r
+    }\r
+\r
+    /**\r
+     * Build the interface.\r
+     */\r
+    protected void build() {\r
+       String  servers[] = model.getServers();\r
+       int     len       = servers.length;\r
+       JButton b         = null;\r
+       setLayout(new GridLayout(len, 1));\r
+\r
+       for (int i = 0 ; i < len ; i++) {\r
+           b = new JButton(servers[i], icon);\r
+           b.setVerticalTextPosition(AbstractButton.BOTTOM);\r
+           b.setHorizontalTextPosition(AbstractButton.CENTER);\r
+           b.setActionCommand(servers[i]);\r
+           b.addActionListener(al);\r
+           b.setMargin(Utilities.insets2);\r
+           b.setToolTipText("Load or reload the configuration of "+\r
+                            servers[i]);\r
+           //b.setBorder(BorderFactory.createRaisedBevelBorder());\r
+           add(b);\r
+       }\r
+    }\r
+\r
+    /**\r
+     * Constructor.\r
+     * @param model The Server list model.\r
+     */\r
+    public ServerList(ServerListModelInterface model) {\r
+       this(model, null);\r
+    }\r
+\r
+    /**\r
+     * Constructor.\r
+     * @param model The Server list model.\r
+     * @param icon. The server icon.\r
+     */\r
+    public ServerList(ServerListModelInterface model, ImageIcon icon) {\r
+       this.icon    = icon;\r
+       this.model   = model;\r
+       listenerList = new EventListenerList();\r
+       build();\r
+    }\r
+\r
+    /**\r
+     * Constructor.\r
+     * @param root The root RemoteResourceWrapper\r
+     */\r
+    public ServerList(RemoteResourceWrapper root) \r
+       throws RemoteAccessException\r
+    {\r
+       this(root, null);\r
+    }\r
+\r
+    /**\r
+     * Constructor.\r
+     * @param root The root RemoteResourceWrapper\r
+     * @param icon. The server icon.\r
+     */\r
+    public ServerList(RemoteResourceWrapper root, ImageIcon icon) \r
+       throws RemoteAccessException\r
+    {\r
+       this.icon    = icon;\r
+       this.model   = new ServerListModel(root);\r
+       listenerList = new EventListenerList();\r
+       build();\r
+    }\r
+\r
+}\r