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);
+		}
+	}
+}