public AddFriendsSheet(RobonoboFrame frame) { super(frame); setPreferredSize(size); double[][] cellSizen = {{10, 90, 5, 250, 10}, {10, 25, 10, 30, 10, 25, 10, 30, 10}}; setLayout(new TableLayout(cellSizen)); setName("playback.background.panel"); RLabel titleLbl = new RLabel16B("Add friends"); add(titleLbl, "1,1,3,1"); JPanel blurb = new LineBreakTextPanel( "Enter your friends' email addresses below to invite them to robonobo:", RoboFont.getFont(13, false), 345); add(blurb, "1,3,3,3"); RLabel newFriendLbl = new RLabel12("New friends:"); add(newFriendLbl, "1,5"); emailField = new RTextField(DEFAULT_EMAILS); emailField.addKeyListener( new KeyAdapter() { public void keyReleased(KeyEvent e) { shareBtn.setEnabled(targetSelected()); } }); emailField.addMouseListener( new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (emailField.getText().equals(DEFAULT_EMAILS)) emailField.setText(""); } }); add(emailField, "3,5"); add(new ButtonPanel(), "3,7,r,t"); }
public RTextField createRGGElement(Element element, RGG rggInstance) { if (element.getNodeType() != Element.ELEMENT_NODE) { throw new IllegalArgumentException("elements node type must be ELEMENT_NODE"); } RTextField rtextfield = new RTextField(); VTextField vtextfield = new VTextField(); /** * **************** initialize and set attributes values ************************************* */ String var = element.getAttribute(RGG.getConfiguration().getString("VAR")); String label = element.getAttribute(RGG.getConfiguration().getString("LABEL")); String colspan = element.getAttribute(RGG.getConfiguration().getString("COLUMN-SPAN")); String defaultvalue = element.getAttribute(RGG.getConfiguration().getString("DEFAULT-VALUE")); String datatype = element.getAttribute(RGG.getConfiguration().getString("DATA-TYPE")); String size = element.getAttribute(RGG.getConfiguration().getString("SIZE")); String enabled = element.getAttribute(RGG.getConfiguration().getString("ENABLED")); /** * ******************************************************************************************** */ if (StringUtils.isNotBlank(var)) { rtextfield.setVar(var); } if (StringUtils.isNotBlank(label)) { rtextfield.setLabel(label); } vtextfield.setLabelText(rtextfield.getLabel()); if (StringUtils.isNotBlank(colspan)) { if (StringUtils.isNumeric(colspan)) { vtextfield.setColumnSpan(Integer.parseInt(colspan)); } else if (StringUtils.equals(colspan, RGG.getConfiguration().getString("FULL-SPAN"))) { vtextfield.setColumnSpan(LayoutInfo.FULL_SPAN); } else { throw new NumberFormatException( RGG.getConfiguration().getString("COLUMN-SPAN") + " seems not to be a number: " + colspan + "nor a known keyword!"); } } if (StringUtils.isNotBlank(defaultvalue)) { vtextfield.setDefaultvalue(defaultvalue); } if (StringUtils.isNotBlank(datatype)) { if (StringUtils.equalsIgnoreCase(RGG.getConfiguration().getString("NUMERIC"), datatype)) { vtextfield.setNumeric(true); } } if (StringUtils.isNotBlank(size) && StringUtils.isNumeric(size)) { vtextfield.setColumns(Integer.parseInt(size)); } if (StringUtils.isNotBlank(enabled)) { if (util.match("/(\\w+)\\./", enabled)) { String id = util.group(1); enabled = util.substitute("s/" + id + "\\.//g", enabled); AutoBinding<Object, Object, Object, Object> binding = Bindings.createAutoBinding( AutoBinding.UpdateStrategy.READ, // one-way binding rggInstance.getObject(id), // source of value ELProperty.create(enabled), // the property to get vtextfield, // the "backing bean" BeanProperty.create("enabled") // property to set ); binding.bind(); } } rtextfield.setTextfield(vtextfield); return rtextfield; }
private boolean targetSelected() { // Could bugger about with regexes here, but I don't think it's worth it return (emailField.getText().length() > 0 && !emailField.getText().equals(DEFAULT_EMAILS)); }
@Override public void onShow() { emailField.requestFocusInWindow(); emailField.selectAll(); }