public EventAdapter(JTextField tf, JTable tbl) { boolean autoIme = Project.getBoolean("autoIme", true); if (autoIme) { tf.addFocusListener(AutoKanjiListener.getInstance()); } else { tf.addFocusListener(AutoRomanListener.getInstance()); } tf.addActionListener(EventAdapter.this); tbl.getSelectionModel().addListSelectionListener(EventAdapter.this); tbl.addMouseListener(EventAdapter.this); }
private JTextField createField(final String text) { final JTextField field = new JTextField(text) { public Dimension getPreferredSize() { Dimension preferredSize = super.getPreferredSize(); return new Dimension(preferredSize.width, myTextHeight); } }; field.setBackground(UIUtil.getPanelBackground()); field.setEditable(false); final Border lineBorder = BorderFactory.createLineBorder(UIUtil.getPanelBackground()); final DottedBorder dotted = new DottedBorder(UIUtil.getActiveTextColor()); field.setBorder(lineBorder); // field.setFocusable(false); field.setHorizontalAlignment(JTextField.RIGHT); field.setCaretPosition(0); field.addFocusListener( new FocusAdapter() { public void focusGained(FocusEvent e) { field.setBorder(dotted); } public void focusLost(FocusEvent e) { field.setBorder(lineBorder); } }); return field; }
private void setupInputListeners(final JTextField currentInput) { currentInput.addKeyListener( new KeyAdapter() { // Plot the graph. @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_ENTER && currentInput.isFocusOwner()) { try { String[] equations = new String[nInputs]; for (int i = 0; i < nInputs; i++) { equations[i] = input[i].getText(); } addPlot( equations, templateFunc.getColor(), gridOP.getGridBounds(), gridOP.getGridStepSize()); } catch (IllegalExpressionException e1) { signalAll(new ActionEvent(e1, -1, "")); } } } }); currentInput.addFocusListener( new FocusAdapter() { @Override public void focusGained(FocusEvent arg0) { setSelected(templateFunc); } }); }
public ReadOnlyTableCellEditor(JTextField tf) { super(tf); tf.addFocusListener(new EditFocusAdapter(this)); tf.addKeyListener(new CopyKeyAdapter()); }
public PanelMore(OSeaMAction dia) { dlg = dia; setLayout(null); panelPat = new PanelPat(dlg, Ent.BODY); panelPat.setBounds(new Rectangle(0, 0, 110, 160)); add(panelPat); add(getRegionButton(regionAButton, 110, 0, 34, 30, "RegionA")); add(getRegionButton(regionBButton, 110, 32, 34, 30, "RegionB")); add(getRegionButton(regionCButton, 110, 64, 34, 30, "RegionC")); elevLabel = new JLabel(Messages.getString("Elevation"), SwingConstants.CENTER); elevLabel.setBounds(new Rectangle(140, 0, 90, 20)); add(elevLabel); elevBox = new JTextField(); elevBox.setBounds(new Rectangle(160, 20, 50, 20)); elevBox.setHorizontalAlignment(SwingConstants.CENTER); add(elevBox); elevBox.addFocusListener(flElev); heightLabel = new JLabel(Messages.getString("Height"), SwingConstants.CENTER); heightLabel.setBounds(new Rectangle(140, 40, 90, 20)); add(heightLabel); heightBox = new JTextField(); heightBox.setBounds(new Rectangle(160, 60, 50, 20)); heightBox.setHorizontalAlignment(SwingConstants.CENTER); add(heightBox); heightBox.addFocusListener(flHeight); sourceLabel = new JLabel(Messages.getString("Source"), SwingConstants.CENTER); sourceLabel.setBounds(new Rectangle(110, 80, 130, 20)); add(sourceLabel); sourceBox = new JTextField(); sourceBox.setBounds(new Rectangle(110, 100, 130, 20)); sourceBox.setHorizontalAlignment(SwingConstants.CENTER); add(sourceBox); sourceBox.addFocusListener(flSource); infoLabel = new JLabel(Messages.getString("Information"), SwingConstants.CENTER); infoLabel.setBounds(new Rectangle(110, 120, 130, 20)); add(infoLabel); infoBox = new JTextField(); infoBox.setBounds(new Rectangle(110, 140, 130, 20)); infoBox.setHorizontalAlignment(SwingConstants.CENTER); add(infoBox); infoBox.addFocusListener(flInfo); statusLabel = new JLabel(Messages.getString("Status"), SwingConstants.CENTER); statusLabel.setBounds(new Rectangle(250, 0, 100, 20)); add(statusLabel); statusBox = new JComboBox(); statusBox.setBounds(new Rectangle(250, 20, 100, 20)); addStsItem("", Sts.UNKSTS); addStsItem(Messages.getString("Permanent"), Sts.PERM); addStsItem(Messages.getString("Occasional"), Sts.OCC); addStsItem(Messages.getString("Recommended"), Sts.REC); addStsItem(Messages.getString("NotInUse"), Sts.NIU); addStsItem(Messages.getString("Intermittent"), Sts.INT); addStsItem(Messages.getString("Reserved"), Sts.RESV); addStsItem(Messages.getString("Temporary"), Sts.TEMP); addStsItem(Messages.getString("Private"), Sts.PRIV); addStsItem(Messages.getString("Mandatory"), Sts.MAND); addStsItem(Messages.getString("Destroyed"), Sts.DEST); addStsItem(Messages.getString("Extinguished"), Sts.EXT); addStsItem(Messages.getString("Illuminated"), Sts.ILLUM); addStsItem(Messages.getString("Historic"), Sts.HIST); addStsItem(Messages.getString("Public"), Sts.PUB); addStsItem(Messages.getString("Synchronized"), Sts.SYNC); addStsItem(Messages.getString("Watched"), Sts.WATCH); addStsItem(Messages.getString("UnWatched"), Sts.UNWAT); addStsItem(Messages.getString("Doubtful"), Sts.DOUBT); add(statusBox); statusBox.addActionListener(alStatus); constrLabel = new JLabel(Messages.getString("Construction"), SwingConstants.CENTER); constrLabel.setBounds(new Rectangle(250, 40, 100, 20)); add(constrLabel); constrBox = new JComboBox(); constrBox.setBounds(new Rectangle(250, 60, 100, 20)); addCnsItem("", Cns.UNKCNS); addCnsItem(Messages.getString("Masonry"), Cns.BRICK); addCnsItem(Messages.getString("Concreted"), Cns.CONC); addCnsItem(Messages.getString("Boulders"), Cns.BOULD); addCnsItem(Messages.getString("HardSurfaced"), Cns.HSURF); addCnsItem(Messages.getString("Unsurfaced"), Cns.USURF); addCnsItem(Messages.getString("Wooden"), Cns.WOOD); addCnsItem(Messages.getString("Metal"), Cns.METAL); addCnsItem(Messages.getString("GRP"), Cns.GLAS); addCnsItem(Messages.getString("Painted"), Cns.PAINT); add(constrBox); constrBox.addActionListener(alConstr); conLabel = new JLabel(Messages.getString("Conspicuity"), SwingConstants.CENTER); conLabel.setBounds(new Rectangle(250, 80, 100, 20)); add(conLabel); conBox = new JComboBox(); conBox.setBounds(new Rectangle(250, 100, 100, 20)); addConItem("", Con.UNKCON); addConItem(Messages.getString("Conspicuous"), Con.CONSP); addConItem(Messages.getString("NotConspicuous"), Con.NCONS); add(conBox); conBox.addActionListener(alCon); reflLabel = new JLabel(Messages.getString("Reflectivity"), SwingConstants.CENTER); reflLabel.setBounds(new Rectangle(250, 120, 100, 20)); add(reflLabel); reflBox = new JComboBox(); reflBox.setBounds(new Rectangle(250, 140, 100, 20)); addReflItem("", Con.UNKCON); addReflItem(Messages.getString("Conspicuous"), Con.CONSP); addReflItem(Messages.getString("NotConspicuous"), Con.NCONS); addReflItem(Messages.getString("Reflector"), Con.REFL); add(reflBox); reflBox.addActionListener(alRefl); }
/** Install the Rotate-Button into the toolbar */ private void installRotateButton() { URL imgURL = ClassLoader.getSystemResource("ch/tbe/pics/rotate.gif"); ImageIcon rotateIcon = new ImageIcon(imgURL); rotate = new JButton(rotateIcon); rotate.setEnabled(false); rotatePanel = new JToolBar(); rotatePanel.setOrientation(1); rotatePanel.setLayout(new BorderLayout(0, 1)); rotateSlider = new JSlider(); rotateSlider.setMaximum(359); rotateSlider.setMinimum(0); rotateSlider.setMaximumSize(new Dimension(100, 100)); rotateSlider.setOrientation(1); Box box = Box.createVerticalBox(); sliderValue.setPreferredSize(new Dimension(30, 20)); rotateSlider.setAlignmentY(Component.TOP_ALIGNMENT); box.add(sliderValue); box.add(rotateSlider); sliderValue.setAlignmentY(Component.TOP_ALIGNMENT); rotatePanel.add(box, BorderLayout.NORTH); sliderValue.addFocusListener( new FocusListener() { private int oldValue = 0; public void focusGained(FocusEvent arg0) { oldValue = Integer.parseInt(sliderValue.getText()); } public void focusLost(FocusEvent arg0) { int newValue = 0; try { newValue = Integer.parseInt(sliderValue.getText()); } catch (Exception ex) { sliderValue.setText(Integer.toString(oldValue)); } if (newValue >= 0 && newValue <= 359) { RotateCommand rc = new RotateCommand(board.getSelectedItems()); ArrayList<Command> actCommands = new ArrayList<Command>(); actCommands.add(rc); TBE.getInstance().addCommands(actCommands); rotateSlider.setValue(newValue); } else { sliderValue.setText(Integer.toString(oldValue)); } } }); rotateSlider.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent arg0) { if (board.getSelectionCount() == 1 && board.getSelectionCells()[0] instanceof ShapeItem) { sliderValue.setText(Integer.toString(rotateSlider.getValue())); ShapeItem s = (ShapeItem) board.getSelectionCells()[0]; board.removeItem(new ItemComponent[] {s}); s.setRotation(rotateSlider.getValue()); board.addItem(s); } } }); rotateSlider.addMouseListener( new MouseAdapter() { private int value; public void mousePressed(MouseEvent e) { value = rotateSlider.getValue(); } public void mouseReleased(MouseEvent e) { if (value != rotateSlider.getValue()) { RotateCommand rc = new RotateCommand(board.getSelectedItems()); ArrayList<Command> actCommands = new ArrayList<Command>(); actCommands.add(rc); TBE.getInstance().addCommands(actCommands); rc.setRotation(value); } } }); rotate.setToolTipText(workingViewLabels.getString("rotate")); rotate.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (board.getSelectionCount() == 1 && board.getSelectedItems()[0] instanceof ShapeItem) { rotateSlider.setValue(((ShapeItem) board.getSelectedItems()[0]).getRotation()); } rotatePanel.setVisible(!rotatePanel.isVisible()); showRotate = !showRotate; } }); rotate.setContentAreaFilled(false); rotate.setBorderPainted(false); toolbar.add(rotate); rotatePanel.setVisible(false); this.add(rotatePanel, BorderLayout.EAST); }
private void initPanel() { mapButtons = new HashMap<>(); for (Commontags commontags : CommontagsTools.getAll()) { mapAllTags.put(commontags.getText(), commontags); } int tagnum = 1; for (Commontags selectedTags : listSelectedTags) { if (tagnum % MAXLINE == 0) { add(createButton(selectedTags), RiverLayout.LINE_BREAK); } else { add(createButton(selectedTags), RiverLayout.LEFT); } tagnum++; } if (editmode) { txtTags = new JTextField(10); SelectAllUtils.install(txtTags); ac = new AutoCompletion(txtTags, mapAllTags.keySet().toArray(new String[] {})); ac.setStrict(false); ac.setStrictCompletion(false); txtTags.addActionListener(e -> cmbTagsActionPerformed(e)); txtTags.addFocusListener( new FocusAdapter() { @Override public void focusLost(FocusEvent e) { cmbTagsActionPerformed(null); } }); txtTags.addKeyListener( new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { char c = e.getKeyChar(); if (Character.isAlphabetic(c) || Character.isDigit(c)) { super.keyTyped(e); } else { e.consume(); } } }); add(txtTags); btnPickTags = GUITools.getTinyButton("opde.tags.pnlcommontags.allTags", SYSConst.icon22checkbox); btnPickTags.setPressedIcon(SYSConst.icon22Pressed); btnPickTags.addActionListener( e -> { final JidePopup popup = new JidePopup(); JPanel pnl = new JPanel(new BorderLayout()); pnl.add(new JScrollPane(getClickableTagsPanel()), BorderLayout.CENTER); // JButton btnApply = new JButton(SYSConst.icon22apply); // pnl.add(btnApply, BorderLayout.SOUTH); // // btnApply.addActionListener(new ActionListener() { // @Override // public void actionPerformed(ActionEvent ae) { // popup.hidePopup(); // } // }); popup.setMovable(false); popup .getContentPane() .setLayout(new BoxLayout(popup.getContentPane(), BoxLayout.LINE_AXIS)); popup.setOwner(btnPickTags); popup.removeExcludedComponent(btnPickTags); pnl.setPreferredSize(new Dimension(400, 200)); popup.getContentPane().add(pnl); popup.setDefaultFocusComponent(pnl); popup.addPopupMenuListener( new PopupMenuListener() { @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) { OPDE.debug("popupMenuWillBecomeVisible"); } @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { SwingUtilities.invokeLater( () -> { removeAll(); add(txtTags); if (btnPickTags != null) { add(btnPickTags); } int tagnum1 = 1; for (JButton btn : mapButtons.values()) { if (tagnum1 % MAXLINE == 0) { add(btn, RiverLayout.LINE_BREAK); } else { add(btn, RiverLayout.LEFT); } tagnum1++; } revalidate(); repaint(); }); } @Override public void popupMenuCanceled(PopupMenuEvent e) { OPDE.debug("popupMenuCanceled"); } }); GUITools.showPopup(popup, SwingConstants.WEST); }); add(btnPickTags); } }
public FileTextFieldImpl( final JTextField field, Finder finder, LookupFilter filter, Map<String, String> macroMap, final Disposable parent) { myPathTextField = field; myMacroMap = new TreeMap<String, String>(); myMacroMap.putAll(macroMap); final InputMap listMap = (InputMap) UIManager.getDefaults().get("List.focusInputMap"); final KeyStroke[] listKeys = listMap.keys(); myDisabledTextActions = new HashSet<Action>(); for (KeyStroke eachListStroke : listKeys) { final String listActionID = (String) listMap.get(eachListStroke); if ("selectNextRow".equals(listActionID) || "selectPreviousRow".equals(listActionID)) { final Object textActionID = field.getInputMap().get(eachListStroke); if (textActionID != null) { final Action textAction = field.getActionMap().get(textActionID); if (textAction != null) { myDisabledTextActions.add(textAction); } } } } final FileTextFieldImpl assigned = (FileTextFieldImpl) myPathTextField.getClientProperty(KEY); if (assigned != null) { assigned.myFinder = finder; assigned.myFilter = filter; return; } myPathTextField.putClientProperty(KEY, this); final boolean headless = ApplicationManager.getApplication().isUnitTestMode(); myUiUpdater = new MergingUpdateQueue("FileTextField.UiUpdater", 200, false, myPathTextField); if (!headless) { new UiNotifyConnector(myPathTextField, myUiUpdater); } myFinder = finder; myFilter = filter; myFileSpitRegExp = myFinder.getSeparator().replaceAll("\\\\", "\\\\\\\\"); myPathTextField .getDocument() .addDocumentListener( new DocumentListener() { public void insertUpdate(final DocumentEvent e) { processTextChanged(); } public void removeUpdate(final DocumentEvent e) { processTextChanged(); } public void changedUpdate(final DocumentEvent e) { processTextChanged(); } }); myPathTextField.addKeyListener( new KeyAdapter() { public void keyPressed(final KeyEvent e) { processListSelection(e); } }); myPathTextField.addFocusListener( new FocusAdapter() { public void focusLost(final FocusEvent e) { closePopup(); } }); myCancelAction = new CancelAction(); new LazyUiDisposable<FileTextFieldImpl>(parent, field, this) { protected void initialize( @NotNull Disposable parent, @NotNull FileTextFieldImpl child, @Nullable Project project) { Disposer.register(child, myUiUpdater); } }; }
public FloorEditorWindow() { previewModeBox.addActionListener( new ActionListener() { /** Invoked when an action occurs. */ public void actionPerformed(ActionEvent e) { previewBox.setMode( FloorPreviewPanel.FloorPreviewMode.values()[previewModeBox.getSelectedIndex()]); loadFloor(); } }); final ChangeListener cl = new ChangeListener() { public void stateChanged(ChangeEvent e) { if (currentFloor == null || isLoading) return; isDirty = true; currentFloor.occlude = blendingCheckbox.isSelected(); switch (previewBox.getMode()) { case RT3_GAME: currentFloor.colour2 = gameColour.getColour(); currentFloor.rgb2hls(currentFloor.colour2, true); currentFloor.texture = (Integer) gameTexture.getValue(); currentFloor.name = gameName.getText(); break; case RT3_MAP: currentFloor.minimapColour = gameColour.getColour(); currentFloor.rgb2hls(currentFloor.minimapColour, false); break; case RT4P_OVERLAY: currentFloor.hdColour = gameColour.getColour(); int hslColour = currentFloor.hslColour; currentFloor.rgb2hls(currentFloor.hdColour, false); currentFloor.hdOlHslColour = hslColour; currentFloor.hslColour = hslColour; currentFloor.hdTexture = (Integer) gameTexture.getValue(); // currentFloor.name = gameName.getText(); break; case RT4P_UNDERLAY: currentFloor.hdUlColour = gameColour.getColour(); hslColour = currentFloor.hslColour; currentFloor.rgb2hls(currentFloor.hdUlColour, false); currentFloor.hdHslColour = hslColour; currentFloor.hslColour = hslColour; currentFloor.hdUlTexture = (Integer) gameTexture.getValue(); // currentFloor.name = gameName.getText(); break; } previewBox.repaint(); } }; gameColour.addChangeListener(cl); gameTexture.addChangeListener(cl); blendingCheckbox.addChangeListener(cl); gameName.addFocusListener( new FocusListener() { String text = ""; public void focusGained(FocusEvent e) { text = gameName.getText(); } public void focusLost(FocusEvent e) { if (!gameName.getText().equals(text)) cl.stateChanged(null); } }); resetButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if ((!isDirty) || JOptionPane.showConfirmDialog( mainPane, "Are you sure you want to revert all changes to this floor?", "RuneScape Map Editor", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) currentFloor = loadedFloor.cloneFLO(); } }); saveButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { isDirty = false; loadedFloor.replace(currentFloor); Floor.cache[loadedFloor.id] = loadedFloor; for (ChangeListener l : listenerList) l.stateChanged(null); } }); saveAsNewButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { isDirty = false; int i = Floor.addNew(currentFloor); currentFloor.id = i; loadedFloor = Floor.cache[i]; for (ChangeListener l : listenerList) l.stateChanged(null); } }); }
private void setupActions() { wordList.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { wordEditField.setText((String) wordList.getSelectedValue()); wordEditField.selectAll(); new FocusRequester(wordEditField); } }); newWord.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { newWordAction(); } }); wordEditFieldListener = new ActionListener() { public void actionPerformed(ActionEvent e) { int index = wordList.getSelectedIndex(); String old = (String) wordList.getSelectedValue(), newVal = wordEditField.getText(); if (newVal.equals("") || newVal.equals(old)) { return; // Empty string or no change. } if (wordListModel.contains(newVal)) { // ensure that word already in list is visible index = wordListModel.indexOf(newVal); wordList.ensureIndexIsVisible(index); return; } int newIndex = findPos(wordListModel, newVal); if (index >= 0) { // initiate replacement of selected word wordListModel.remove(index); if (newIndex > index) { // newIndex has to be adjusted after removal of previous entry newIndex--; } } wordListModel.add(newIndex, newVal); wordList.ensureIndexIsVisible(newIndex); wordEditField.selectAll(); } }; wordEditField.addActionListener(wordEditFieldListener); removeWord.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { int index = wordList.getSelectedIndex(); if (index == -1) return; wordListModel.remove(index); wordEditField.setText(""); if (wordListModel.size() > 0) wordList.setSelectedIndex(Math.min(index, wordListModel.size() - 1)); } }); fieldList.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { currentField = (String) fieldList.getSelectedValue(); fieldNameField.setText(""); setupWordSelector(); } }); newField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (!fieldListModel.get(0).equals(FIELD_FIRST_LINE)) { // only add <field name> once fieldListModel.add(0, FIELD_FIRST_LINE); } fieldList.setSelectedIndex(0); fPane.getVerticalScrollBar().setValue(0); fieldNameField.setEnabled(true); fieldNameField.setText(currentField); fieldNameField.selectAll(); new FocusRequester(fieldNameField); } }); fieldNameField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { fieldNameField.transferFocus(); } }); fieldNameField.addFocusListener( new FocusAdapter() { /** Adds the text value to the list */ public void focusLost(FocusEvent e) { String s = fieldNameField.getText(); fieldNameField.setText(""); fieldNameField.setEnabled(false); if (!FIELD_FIRST_LINE.equals(s) && !"".equals(s)) { // user has typed something // remove "<first name>" from list fieldListModel.remove(0); int pos; if (fieldListModel.contains(s)) { // field already exists, scroll to that field (below) pos = fieldListModel.indexOf(s); } else { // Add new field. pos = findPos(fieldListModel, s); fieldListModel.add(Math.max(0, pos), s); } fieldList.setSelectedIndex(pos); fieldList.ensureIndexIsVisible(pos); currentField = s; setupWordSelector(); newWordAction(); // new FocusRequester(wordEditField); } } }); removeField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { int index = fieldList.getSelectedIndex(); if (index == -1) return; String fieldName = (String) fieldListModel.get(index); removedFields.add(fieldName); fieldListModel.remove(index); wordListModels.remove(fieldName); fieldNameField.setText(""); if (fieldListModel.size() > 0) fieldList.setSelectedIndex(Math.min(index, wordListModel.size() - 1)); } }); help.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { frame.helpDiag.showPage(GUIGlobals.contentSelectorHelp); } }); ok.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { applyChanges(); dispose(); } }); apply.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { // Store if an entry is currently being edited: if (!wordEditField.getText().equals("")) { wordEditFieldListener.actionPerformed(null); } applyChanges(); } }); @SuppressWarnings("serial") Action cancelAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { dispose(); } }; cancelAction.putValue(Action.NAME, Globals.lang("Cancel")); cancel.setAction(cancelAction); }
public ContextEditor(Context cntxt) { super("Edit User Context: " + localFileName(cntxt)); ctxt = cntxt; windowNum = ctxt.languageName + " Context Editor"; setDefaultCloseOperation(DISPOSE_ON_CLOSE); listener = new CEListener(this); JPanel nameBox = new JPanel(); nameBox.setLayout(new BoxLayout(nameBox, BoxLayout.LINE_AXIS)); name = new JTextField(ctxt.languageName, 28); name.setMaximumSize(new Dimension(225, 22)); name.addFocusListener( new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent evt) { nameFocusLost(evt); } }); JLabel nameLabel = new JLabel("Language Name: "); nameBox.add(nameLabel); nameBox.add(name); JPanel folderBox = new JPanel(); folderBox.setLayout(new BoxLayout(folderBox, BoxLayout.LINE_AXIS)); folder = new JTextField(ctxt.editDirectory); folder.setMaximumSize(new Dimension(225, 22)); // folder.addActionListener(listener); // folder.setActionCommand("folder edit"); folder.addFocusListener( new java.awt.event.FocusAdapter() { public void focusLost(java.awt.event.FocusEvent evt) { folderFocusLost(evt); } }); JLabel folderLabel = new JLabel("SILK file folder: "); folderBox.add(folderLabel); folderBox.add(folder); JPanel nameFolderBox = new JPanel(); nameFolderBox.setLayout(new BoxLayout(nameFolderBox, BoxLayout.PAGE_AXIS)); nameBox.setAlignmentX(0.5f); nameFolderBox.add(nameBox); nameFolderBox.add(Box.createRigidArea(new Dimension(0, 4))); nameFolderBox.add(folderBox); nameFolderBox.setAlignmentX(0.5f); buildPopulationBox(); JPanel btnBoxUDPs = new JPanel(), subBoxUDP = new JPanel(); btnBoxUDPs.setLayout(new BoxLayout(btnBoxUDPs, BoxLayout.PAGE_AXIS)); subBoxUDP.setLayout(new BoxLayout(subBoxUDP, BoxLayout.LINE_AXIS)); int numUDPs = 0; if (ctxt.userDefinedProperties != null) { numUDPs = ctxt.userDefinedProperties.size(); } String plur = "ies"; if (numUDPs == 1) { plur = "y"; } JLabel udpLabel = new JLabel("Has " + numUDPs + " User-Defined Propert" + plur); subBoxUDP.add(udpLabel); JButton addUDP = new JButton("Add UDP"); addUDP.setActionCommand("add UDP"); addUDP.addActionListener(listener); subBoxUDP.add(addUDP); btnBoxUDPs.add(subBoxUDP); if (numUDPs > 0) { Dimension sizer = new Dimension(250, 50); String[] udpMenu = genUDPMenu(); UDPick = new JComboBox(udpMenu); UDPick.addActionListener(listener); UDPick.setActionCommand("view/edit UDP"); UDPick.setMinimumSize(sizer); UDPick.setMaximumSize(sizer); UDPick.setBorder( BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.blue), "View/Edit UDPs")); btnBoxUDPs.add(UDPick); } // end of if-any-UDPs-exist JPanel domThs = new JPanel(); domThs.setLayout(new BoxLayout(domThs, BoxLayout.PAGE_AXIS)); domThs.setBorder( BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.blue), "Kinship System Domain Theories")); domThs.setAlignmentX(0.5f); JPanel dtRefBtnBox = new JPanel(); dtRefBtnBox.setLayout(new BoxLayout(dtRefBtnBox, BoxLayout.LINE_AXIS)); dtRefBtnBox.setAlignmentX(0.0f); JLabel dtRefLabel = new JLabel("Terms of Reference "); dtRefBtnBox.add(dtRefLabel); if (ctxt.domTheoryRefExists()) { JButton dtRefEdit = new JButton("Edit Theory"); dtRefEdit.setActionCommand("edit dtRef"); dtRefEdit.addActionListener(listener); dtRefBtnBox.add(dtRefEdit); // JButton dtRefDelete = new JButton("Delete Theory"); // dtRefDelete.setActionCommand("dtRef delete"); // dtRefDelete.addActionListener(listener); // dtRefBtnBox.add(dtRefDelete); } // end of if-dt-exists else { // if does not exist JLabel dtRefNone = new JLabel("< None >"); dtRefBtnBox.add(dtRefNone); // JButton dtRefAdd = new JButton("Add Theory"); // dtRefAdd.setActionCommand("dtRef add"); // dtRefAdd.addActionListener(listener); // dtRefBtnBox.add(dtRefAdd); } // end of does-not-exist domThs.add(dtRefBtnBox); JPanel dtAddrBtnBox = new JPanel(); dtAddrBtnBox.setLayout(new BoxLayout(dtAddrBtnBox, BoxLayout.LINE_AXIS)); dtAddrBtnBox.setAlignmentX(0.0f); JLabel dtAddrLabel = new JLabel("Terms of Address "); dtAddrBtnBox.add(dtAddrLabel); if (ctxt.domTheoryAdrExists()) { JButton dtAddrEdit = new JButton("Edit Theory"); dtAddrEdit.setActionCommand("edit dtAddr"); dtAddrEdit.addActionListener(listener); dtAddrBtnBox.add(dtAddrEdit); // JButton dtAddrViewList = new JButton("Delete Theory"); // dtAddrViewList.setActionCommand("dtAddr delete"); // dtAddrViewList.addActionListener(listener); // dtAddrBtnBox.add(dtAddrViewList); } // end of if-dt-exists else { // if does not exist JLabel dtAddrNone = new JLabel("< None >"); dtAddrBtnBox.add(dtAddrNone); // JButton dtAddrAdd = new JButton("Add Theory"); // dtAddrAdd.setActionCommand("dtAddr add"); // dtAddrAdd.addActionListener(listener); // dtAddrBtnBox.add(dtAddrAdd); } // end of does-not-exist domThs.add(dtAddrBtnBox); // End of the left hand portion // Right hand portion follows. it is narrower. JPanel polyBox = new JPanel(); polyBox.setLayout(new BoxLayout(polyBox, BoxLayout.PAGE_AXIS)); polyBox.setAlignmentX(0.5f); JLabel polyLabelA = new JLabel("Polygamy"); JLabel polyLabelB = new JLabel("Permitted?"); JRadioButton yesPoly = new JRadioButton("Yes"); yesPoly.setActionCommand("polygamy yes"); yesPoly.addActionListener(listener); JRadioButton noPoly = new JRadioButton("No"); noPoly.setActionCommand("polygamy no"); noPoly.addActionListener(listener); if (cntxt.polygamyPermit) { yesPoly.setSelected(true); } else { noPoly.setSelected(true); } ButtonGroup polyBtns = new ButtonGroup(); polyBtns.add(yesPoly); polyBtns.add(noPoly); polyBox.add(polyLabelA); polyBox.add(polyLabelB); polyBox.add(yesPoly); polyBox.add(noPoly); JPanel matrixBox = new JPanel(); matrixBox.setLayout(new BoxLayout(matrixBox, BoxLayout.PAGE_AXIS)); matrixBox.setAlignmentX(0.5f); JLabel matrixLabelA = new JLabel("Kin Term Matrix"); JLabel matrixLabelC = new JLabel(ctxt.indSerNumGen + " rows"); JLabel matrixLabelD = new JLabel(ctxt.ktm.numberOfKinTerms() + " terms"); matrixLabelA.setAlignmentX(0.5f); matrixLabelC.setAlignmentX(0.5f); matrixLabelD.setAlignmentX(0.5f); JButton matrixEditBtn = new JButton("Edit Matrix"); matrixEditBtn.setEnabled(false); matrixEditBtn.setActionCommand("edit matrix"); matrixEditBtn.addActionListener(listener); matrixEditBtn.setAlignmentX(0.5f); matrixBox.add(matrixLabelA); matrixBox.add(matrixLabelC); matrixBox.add(matrixLabelD); matrixBox.add(matrixEditBtn); JPanel distinctBox = new JPanel(); distinctBox.setLayout(new BoxLayout(distinctBox, BoxLayout.PAGE_AXIS)); distinctBox.setAlignmentX(0.5f); JLabel distinctLabelA = new JLabel("Distinct Terms"); JLabel distinctLabelB = new JLabel("of Address"); distinctLabelA.setAlignmentX(0.5f); distinctLabelB.setAlignmentX(0.5f); JRadioButton yesDistinct = new JRadioButton("Yes"); yesDistinct.setActionCommand("distinct yes"); yesDistinct.addActionListener(listener); JRadioButton noDistinct = new JRadioButton("No"); noDistinct.setActionCommand("distinct no"); noDistinct.addActionListener(listener); yesDistinct.setAlignmentX(0.5f); noDistinct.setAlignmentX(0.5f); if (ctxt.distinctAdrTerms) { yesDistinct.setSelected(true); } else { noDistinct.setSelected(true); } ButtonGroup distinctBtns = new ButtonGroup(); distinctBtns.add(yesDistinct); distinctBtns.add(noDistinct); distinctBox.add(distinctLabelA); distinctBox.add(distinctLabelB); distinctBox.add(yesDistinct); distinctBox.add(noDistinct); /* * NOTE: It should be possible to put all these elements directly into * the ContentPane. But that doesn't work; the layout is truly ugly and * stuff gets stacked on top of other stuff. What works is to put * everything into a JPanel with BoxLayout. Then put the JPanel into * ContentPane. */ JPanel leftCol = new JPanel(); leftCol.setLayout(new BoxLayout(leftCol, BoxLayout.PAGE_AXIS)); leftCol.add(nameFolderBox); leftCol.add(Box.createRigidArea(new Dimension(0, 4))); leftCol.add(populationBox); leftCol.add(Box.createRigidArea(new Dimension(0, 8))); leftCol.add(btnBoxUDPs); leftCol.add(Box.createRigidArea(new Dimension(0, 8))); leftCol.add(domThs); leftCol.add(new JLabel(" ")); JPanel rightCol = new JPanel(); rightCol.setLayout(new BoxLayout(rightCol, BoxLayout.PAGE_AXIS)); rightCol.setBorder( BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.blue), "Options")); rightCol.add(Box.createRigidArea(new Dimension(0, 20))); rightCol.add(polyBox); rightCol.add(Box.createRigidArea(new Dimension(0, 20))); rightCol.add(matrixBox); int high = (numUDPs > 0 ? 120 : 20); rightCol.add(Box.createRigidArea(new Dimension(0, high))); rightCol.add(distinctBox); JPanel commentBox = new JPanel(); commentBox.setLayout(new BoxLayout(commentBox, BoxLayout.PAGE_AXIS)); commentBox.setBorder( BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.blue), "Notes on this culture:")); JScrollPane commentsPane = new JScrollPane(); comments = new JTextArea(); comments.setColumns(20); comments.setEditable(true); comments.setRows(3); comments.setText(PersonPanel.restoreLineBreaks(ctxt.comments)); comments.getDocument().addDocumentListener(new CommentListener()); commentsPane.setViewportView(comments); commentBox.add(commentsPane); JPanel guts = new JPanel(); // Holds the guts of this window guts.setLayout(new BoxLayout(guts, BoxLayout.LINE_AXIS)); guts.add(leftCol); guts.add(Box.createRigidArea(new Dimension(10, 4))); guts.add(rightCol); JPanel wholeThing = new JPanel(); wholeThing.setLayout(new BoxLayout(wholeThing, BoxLayout.PAGE_AXIS)); wholeThing.add(Box.createRigidArea(new Dimension(0, 4))); wholeThing.add(guts); wholeThing.add(Box.createRigidArea(new Dimension(0, 8))); wholeThing.add(commentBox); wholeThing.add(Box.createRigidArea(new Dimension(0, 4))); getContentPane().add(wholeThing); addInternalFrameListener(this); setSize(600, 620); setVisible(true); } // end of ContextEditor constructor