You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2011/09/21 15:35:32 UTC
svn commit: r1173632 - in
/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya:
component/gui/NewJCRRegistryUserDialog.java gui/XBayaLinkButton.java
Author: lahiru
Date: Wed Sep 21 13:35:31 2011
New Revision: 1173632
URL: http://svn.apache.org/viewvc?rev=1173632&view=rev
Log:
committing saminda's patch for AIRAVATA-104.
Added:
incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/component/gui/NewJCRRegistryUserDialog.java
incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaLinkButton.java
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/component/gui/NewJCRRegistryUserDialog.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/component/gui/NewJCRRegistryUserDialog.java?rev=1173632&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/component/gui/NewJCRRegistryUserDialog.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/component/gui/NewJCRRegistryUserDialog.java Wed Sep 21 13:35:31 2011
@@ -0,0 +1,178 @@
+package org.apache.airavata.xbaya.component.gui;
+
+import java.awt.event.ActionEvent;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+
+import javax.swing.AbstractAction;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+
+import org.apache.airavata.xbaya.XBayaEngine;
+import org.apache.airavata.xbaya.component.registry.ComponentRegistryLoader;
+import org.apache.airavata.xbaya.component.registry.JCRComponentRegistry;
+import org.apache.airavata.xbaya.gui.ErrorMessages;
+import org.apache.airavata.xbaya.gui.GridPanel;
+import org.apache.airavata.xbaya.gui.XBayaDialog;
+import org.apache.airavata.xbaya.gui.XBayaLabel;
+import org.apache.airavata.xbaya.gui.XBayaLinkButton;
+import org.apache.airavata.xbaya.gui.XBayaTextField;
+
+public class NewJCRRegistryUserDialog {
+
+ private XBayaEngine engine;
+
+ private ComponentRegistryLoader loader;
+
+ private XBayaDialog dialog;
+
+ private XBayaTextField urlTextField;
+
+ private XBayaTextField usernameTextField;
+
+ private JPasswordField passwordTextField;
+
+ private XBayaLinkButton newUserButton;
+
+ private String username;
+
+ private URL url;
+
+ public NewJCRRegistryUserDialog(XBayaEngine engine) {
+ this(engine,null);
+ }
+
+ public NewJCRRegistryUserDialog(XBayaEngine engine, URL url) {
+ this(engine,url,null);
+ }
+
+ /**
+ * @param engine
+ */
+ public NewJCRRegistryUserDialog(XBayaEngine engine, URL url, String username) {
+ this.engine = engine;
+ this.loader = new ComponentRegistryLoader(engine);
+ setUrl(url);
+ setUsername(username);
+ initGUI();
+ }
+
+ /**
+ * Displays the dialog.
+ */
+ public void show() {
+ this.dialog.show();
+ }
+
+ private void hide() {
+ this.dialog.hide();
+ }
+
+ private void ok() {
+ String urlString = this.urlTextField.getText();
+ String username = this.usernameTextField.getText();
+ String password = new String(this.passwordTextField.getPassword());
+
+ if (urlString.length() == 0) {
+ this.engine.getErrorWindow().error(ErrorMessages.URL_EMPTY);
+ return;
+ }
+ URI url;
+ try {
+ url = new URI(urlString);
+ } catch (URISyntaxException e) {
+ this.engine.getErrorWindow().error(ErrorMessages.URL_WRONG, e);
+ return;
+ }
+
+ JCRComponentRegistry registry = new JCRComponentRegistry(url, username, password);
+
+ hide();
+
+ this.loader.load(registry);
+ }
+
+ private void createNewUser(){
+
+ }
+
+ /**
+ * Initializes the GUI.
+ */
+ private void initGUI() {
+ this.urlTextField = new XBayaTextField();
+ this.usernameTextField = new XBayaTextField();
+ this.passwordTextField = new JPasswordField();
+ XBayaLabel urlLabel = new XBayaLabel("URL", this.urlTextField);
+ XBayaLabel nameLabel = new XBayaLabel("Username", this.usernameTextField);
+ XBayaLabel passLabel = new XBayaLabel("Password", this.usernameTextField);
+
+ this.newUserButton = new XBayaLinkButton("Create new user...");
+ newUserButton.setHorizontalAlignment(XBayaLinkButton.RIGHT);
+ JLabel emptyLabel = new JLabel("");
+
+ newUserButton.addActionListener(new AbstractAction() {
+ public void actionPerformed(ActionEvent e) {
+ createNewUser();
+ }
+ });
+
+ GridPanel infoPanel = new GridPanel();
+ infoPanel.add(urlLabel);
+ infoPanel.add(this.urlTextField);
+// GridBagConstraints c = new GridBagConstraints();
+// c.fill = GridBagConstraints.HORIZONTAL;
+// c.gridwidth = 2;
+// c.gridx = 0;
+// c.gridy = 1;
+// infoPanel.getContentPanel().add(new JSeparator(SwingConstants.HORIZONTAL),c);
+// infoPanel.add(new JSeparator(SwingConstants.HORIZONTAL));
+ infoPanel.add(nameLabel);
+ infoPanel.add(this.usernameTextField);
+ infoPanel.add(passLabel);
+ infoPanel.add(this.passwordTextField);
+ infoPanel.add(emptyLabel);
+ infoPanel.add(this.newUserButton);
+ infoPanel.layout(4, 2, GridPanel.WEIGHT_NONE, 1);
+
+ JButton okButton = new JButton("OK");
+ okButton.addActionListener(new AbstractAction() {
+ public void actionPerformed(ActionEvent e) {
+ ok();
+ }
+ });
+
+ JButton cancelButton = new JButton("Cancel");
+ cancelButton.addActionListener(new AbstractAction() {
+ public void actionPerformed(ActionEvent e) {
+ hide();
+ }
+ });
+
+ JPanel buttonPanel = new JPanel();
+ buttonPanel.add(okButton);
+ buttonPanel.add(cancelButton);
+
+ this.dialog = new XBayaDialog(this.engine, "JCR Registry", infoPanel, buttonPanel);
+ this.dialog.setDefaultButton(okButton);
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public URL getUrl() {
+ return url;
+ }
+
+ public void setUrl(URL url) {
+ this.url = url;
+ }
+}
Added: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaLinkButton.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaLinkButton.java?rev=1173632&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaLinkButton.java (added)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/gui/XBayaLinkButton.java Wed Sep 21 13:35:31 2011
@@ -0,0 +1,295 @@
+package org.apache.airavata.xbaya.gui;
+
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.GridLayout;
+import java.awt.Rectangle;
+import java.net.URL;
+
+import javax.swing.Action;
+import javax.swing.ButtonModel;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.metal.MetalButtonUI;
+
+public class XBayaLinkButton extends JButton {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4827125226349868996L;
+
+ public static final int ALWAYS_UNDERLINE = 0;
+
+ public static final int HOVER_UNDERLINE = 1;
+
+ public static final int NEVER_UNDERLINE = 2;
+
+ public static final int SYSTEM_DEFAULT = 3;
+
+ private int linkBehavior;
+
+ private Color linkColor;
+
+ private Color colorPressed;
+
+ private Color visitedLinkColor;
+
+ private Color disabledLinkColor;
+
+ private URL buttonURL;
+
+ private Action defaultAction;
+
+ private boolean isLinkVisited;
+
+ public static void main(String[] a) {
+ JFrame f = new JFrame();
+ f.getContentPane().setLayout(new GridLayout(0, 2));
+ f.getContentPane().add(new XBayaLinkButton("www.java2s.com"));
+ f.getContentPane().add(
+ new XBayaLinkButton(
+ "www.java2s.com/ExampleCode/CatalogExampleCode.htm"));
+ f.setSize(600, 200);
+ f.setVisible(true);
+ }
+
+ public XBayaLinkButton() {
+ this(null, null, null);
+ }
+
+ public XBayaLinkButton(Action action) {
+ this();
+ setAction(action);
+ }
+
+ public XBayaLinkButton(Icon icon) {
+ this(null, icon, null);
+ }
+
+ public XBayaLinkButton(String s) {
+ this(s, null, null);
+ }
+
+ public XBayaLinkButton(URL url) {
+ this(null, null, url);
+ }
+
+ public XBayaLinkButton(String s, URL url) {
+ this(s, null, url);
+ }
+
+ public XBayaLinkButton(Icon icon, URL url) {
+ this(null, icon, url);
+ }
+
+ public XBayaLinkButton(String text, Icon icon, URL url) {
+ super(text, icon);
+ linkBehavior = SYSTEM_DEFAULT;
+ linkColor = Color.blue;
+ colorPressed = Color.red;
+ visitedLinkColor = new Color(128, 0, 128);
+ if (text == null && url != null)
+ setText(url.toExternalForm());
+ setLinkURL(url);
+ setCursor(Cursor.getPredefinedCursor(12));
+ setBorderPainted(false);
+ setContentAreaFilled(false);
+ setRolloverEnabled(true);
+ addActionListener(defaultAction);
+ }
+
+ public void updateUI() {
+ setUI(BasicLinkButtonUI.createUI(this));
+ }
+
+ public String getUIClassID() {
+ return "LinkButtonUI";
+ }
+
+ protected void setupToolTipText() {
+ String tip = null;
+ if (buttonURL != null)
+ tip = buttonURL.toExternalForm();
+ setToolTipText(tip);
+ }
+
+ public void setLinkBehavior(int bnew) {
+ checkLinkBehaviour(bnew);
+ int old = linkBehavior;
+ linkBehavior = bnew;
+ firePropertyChange("linkBehavior", old, bnew);
+ repaint();
+ }
+
+ private void checkLinkBehaviour(int beha) {
+ if (beha != ALWAYS_UNDERLINE && beha != HOVER_UNDERLINE
+ && beha != NEVER_UNDERLINE && beha != SYSTEM_DEFAULT)
+ throw new IllegalArgumentException("Not a legal LinkBehavior");
+ else
+ return;
+ }
+
+ public int getLinkBehavior() {
+ return linkBehavior;
+ }
+
+ public void setLinkColor(Color color) {
+ Color colorOld = linkColor;
+ linkColor = color;
+ firePropertyChange("linkColor", colorOld, color);
+ repaint();
+ }
+
+ public Color getLinkColor() {
+ return linkColor;
+ }
+
+ public void setActiveLinkColor(Color colorNew) {
+ Color colorOld = colorPressed;
+ colorPressed = colorNew;
+ firePropertyChange("activeLinkColor", colorOld, colorNew);
+ repaint();
+ }
+
+ public Color getActiveLinkColor() {
+ return colorPressed;
+ }
+
+ public void setDisabledLinkColor(Color color) {
+ Color colorOld = disabledLinkColor;
+ disabledLinkColor = color;
+ firePropertyChange("disabledLinkColor", colorOld, color);
+ if (!isEnabled())
+ repaint();
+ }
+
+ public Color getDisabledLinkColor() {
+ return disabledLinkColor;
+ }
+
+ public void setVisitedLinkColor(Color colorNew) {
+ Color colorOld = visitedLinkColor;
+ visitedLinkColor = colorNew;
+ firePropertyChange("visitedLinkColor", colorOld, colorNew);
+ repaint();
+ }
+
+ public Color getVisitedLinkColor() {
+ return visitedLinkColor;
+ }
+
+ public URL getLinkURL() {
+ return buttonURL;
+ }
+
+ public void setLinkURL(URL url) {
+ URL urlOld = buttonURL;
+ buttonURL = url;
+ setupToolTipText();
+ firePropertyChange("linkURL", urlOld, url);
+ revalidate();
+ repaint();
+ }
+
+ public void setLinkVisited(boolean flagNew) {
+ boolean flagOld = isLinkVisited;
+ isLinkVisited = flagNew;
+ firePropertyChange("linkVisited", flagOld, flagNew);
+ repaint();
+ }
+
+ public boolean isLinkVisited() {
+ return isLinkVisited;
+ }
+
+ public void setDefaultAction(Action actionNew) {
+ Action actionOld = defaultAction;
+ defaultAction = actionNew;
+ firePropertyChange("defaultAction", actionOld, actionNew);
+ }
+
+ public Action getDefaultAction() {
+ return defaultAction;
+ }
+
+ protected String paramString() {
+ String str;
+ if (linkBehavior == ALWAYS_UNDERLINE)
+ str = "ALWAYS_UNDERLINE";
+ else if (linkBehavior == HOVER_UNDERLINE)
+ str = "HOVER_UNDERLINE";
+ else if (linkBehavior == NEVER_UNDERLINE)
+ str = "NEVER_UNDERLINE";
+ else
+ str = "SYSTEM_DEFAULT";
+ String colorStr = linkColor == null ? "" : linkColor.toString();
+ String colorPressStr = colorPressed == null ? "" : colorPressed
+ .toString();
+ String disabledLinkColorStr = disabledLinkColor == null ? ""
+ : disabledLinkColor.toString();
+ String visitedLinkColorStr = visitedLinkColor == null ? ""
+ : visitedLinkColor.toString();
+ String buttonURLStr = buttonURL == null ? "" : buttonURL.toString();
+ String isLinkVisitedStr = isLinkVisited ? "true" : "false";
+ return super.paramString() + ",linkBehavior=" + str + ",linkURL="
+ + buttonURLStr + ",linkColor=" + colorStr + ",activeLinkColor="
+ + colorPressStr + ",disabledLinkColor=" + disabledLinkColorStr
+ + ",visitedLinkColor=" + visitedLinkColorStr
+ + ",linkvisitedString=" + isLinkVisitedStr;
+ }
+}
+
+class BasicLinkButtonUI extends MetalButtonUI {
+ private static final BasicLinkButtonUI ui = new BasicLinkButtonUI();
+
+ public BasicLinkButtonUI() {
+ }
+
+ public static ComponentUI createUI(JComponent jcomponent) {
+ return ui;
+ }
+
+ protected void paintText(Graphics g, JComponent com, Rectangle rect,
+ String s) {
+ XBayaLinkButton bn = (XBayaLinkButton) com;
+ ButtonModel bnModel = bn.getModel();
+ if (bnModel.isEnabled()) {
+ if (bnModel.isPressed())
+ bn.setForeground(bn.getActiveLinkColor());
+ else if (bn.isLinkVisited())
+ bn.setForeground(bn.getVisitedLinkColor());
+
+ else
+ bn.setForeground(bn.getLinkColor());
+ } else {
+ if (bn.getDisabledLinkColor() != null)
+ bn.setForeground(bn.getDisabledLinkColor());
+ }
+ super.paintText(g, com, rect, s);
+ int behaviour = bn.getLinkBehavior();
+ boolean drawLine = false;
+ if (behaviour == XBayaLinkButton.HOVER_UNDERLINE) {
+ if (bnModel.isRollover())
+ drawLine = true;
+ } else if (behaviour == XBayaLinkButton.ALWAYS_UNDERLINE
+ || behaviour == XBayaLinkButton.SYSTEM_DEFAULT)
+ drawLine = true;
+ if (!drawLine)
+ return;
+ FontMetrics fm = g.getFontMetrics();
+ int x = rect.x + getTextShiftOffset();
+ int y = (rect.y + fm.getAscent() + fm.getDescent() + getTextShiftOffset()) - 1;
+ if (bnModel.isEnabled()) {
+ g.setColor(bn.getForeground());
+ g.drawLine(x, y, (x + rect.width) - 1, y);
+ } else {
+ g.setColor(bn.getBackground().brighter());
+ g.drawLine(x, y, (x + rect.width) - 1, y);
+ }
+ }
+}