code: public void addNodeSelectField(final String fieldLabel, final SiteNode value, 
  			final boolean editable, final boolean allowRoot) {
  		validateNotTabbed();
  		final ZapTextField text = new ZapTextField();
  		text.setEditable(editable);
  		if (value != null) {
  			text.setText(getNodeText(value));
  		}
  		JButton selectButton = new JButton(Constant.messages.getString("all.button.select"));
  		selectButton.setIcon(new ImageIcon(View.class.getResource("/resource/icon/16/094.png"))); // Globe icon
  		selectButton.addActionListener(new java.awt.event.ActionListener() { 
  			// Keep a local copy so that we can always select the last node chosen
  			SiteNode node = value;
  			@Override
  			public void actionPerformed(java.awt.event.ActionEvent e) {
  				NodeSelectDialog nsd = new NodeSelectDialog(StandardFieldsDialog.this);
  				nsd.setAllowRoot(allowRoot);
  				SiteNode node = nsd.showDialog(this.node);
  				if (node != null) {
  					text.setText(getNodeText(node));
  					this.node = node;
  					siteNodeSelected(fieldLabel, node);
  				}
  			}
  		});
  		JPanel panel = new JPanel();
  		panel.setLayout(new GridBagLayout());
  		panel.add(text, LayoutHelper.getGBC(0, 0, 1, 1.0D, 0.0D, GridBagConstraints.BOTH, new Insets(4,4,4,4)));
  		panel.add(selectButton, LayoutHelper.getGBC(1, 0, 1, 0.0D, 0.0D, GridBagConstraints.BOTH, new Insets(4,4,4,4)));
  		
  		this.addField(fieldLabel, text, panel, 0.0D);
  	}
docs: /*
  Add a 'node select' field which provides a button for showing a Node Select Dialog and a
  non editable field for showing the node selected