package mapmaker; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import mapmaker.event.*; public class BriefRoomBean extends JPanel implements MapSelectionListener, ActiveMapListener { JCheckBox mUseCheckBox = new JCheckBox("Use Autoname?"); JLabel mShortLabel = new JLabel("Short: "); JTextField mShortField = new JTextField(); JLabel mFileNameLabel = new JLabel("File: "); JTextField mFileNameField = new JTextField(); JButton mEditButton = new JButton(new EditAction()); JButton mDeleteButton = new JButton(new DeleteAction()); MapWindow mMapWindow; MapLocation mCurrentMapLocation; public BriefRoomBean() { super(new BorderLayout()); PairedComponentPanel mainPanel = new PairedComponentPanel(3); ButtonPanel buttonPanel = new ButtonPanel(3); mainPanel.addComponentPair(mShortLabel, mShortField); mainPanel.addComponentPair(mFileNameLabel, mFileNameField); mainPanel.addHangingComponent(mUseCheckBox); buttonPanel.addButton(mEditButton); buttonPanel.addButton(mDeleteButton); add(mainPanel, BorderLayout.CENTER); add(buttonPanel, BorderLayout.SOUTH); mUseCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { boolean selected = mUseCheckBox.isSelected(); if (selected) { mFileNameField.setText(mCurrentMapLocation.getAutoName()); mCurrentMapLocation.setUseAutoName(true); mFileNameField.setEnabled(false); } else { mFileNameField.setText(mCurrentMapLocation.getFileName()); mCurrentMapLocation.setUseAutoName(false); mFileNameField.setEnabled(true); } } }); mFileNameField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { mCurrentMapLocation.setProperty("short", mShortField.getText()); } catch (Exception ex) { ex.printStackTrace(); } } }); mShortField.addFocusListener(new FocusAdapter() { public void focusLost(FocusEvent e) { try { mCurrentMapLocation.setProperty("short", mShortField.getText()); } catch (Exception ex) { ex.printStackTrace(); } } }); mFileNameField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (Utils.isValidFileName(mFileNameField)) { mCurrentMapLocation.setFileName(mFileNameField.getText()); } else { System.out.println("Opps..."); } } }); mFileNameField.addFocusListener(new FocusAdapter() { public void focusLost(FocusEvent e) { if (Utils.isValidFileName(mFileNameField)) { mCurrentMapLocation.setFileName(mFileNameField.getText()); } else { System.out.println("Opps..."); } } }); Font font = new Font("Arial", Font.BOLD, 9); mUseCheckBox.setFont(font); mShortLabel.setFont(font); mShortField.setFont(font); mFileNameLabel.setFont(font); mFileNameField.setFont(font); mEditButton.setFont(font); mDeleteButton.setFont(font); mEditButton.setBorder(BorderFactory.createEtchedBorder()); mDeleteButton.setBorder(BorderFactory.createEtchedBorder()); } public void reset() { mShortField.setEnabled(true); mUseCheckBox.setSelected(true); mFileNameField.setEnabled(false); mFileNameField.setText(""); mShortField.setText(""); } public void setEnabled(boolean aEnabled) { mShortField.setEnabled(aEnabled); mUseCheckBox.setEnabled(aEnabled); mFileNameField.setEnabled(aEnabled); mEditButton.setEnabled(aEnabled); mDeleteButton.setEnabled(aEnabled); } public void activeMapChanged(ActiveMapEvent e) { Vector selection; MapWindow mapWindow = e.getActiveMapWindow(); if (mapWindow == null) { if (mMapWindow != null) { mMapWindow.getMapView().getMapSelection().removeMapSelectionListener(this); } reset(); setEnabled(false); } else { mapWindow.getMapView().getMapSelection().addMapSelectionListener(this); selection = mapWindow.getMapView().getMapSelection().getSelected(); setFor(selection); } mMapWindow = mapWindow; } public void setFor(Vector aSelection) { reset(); if (aSelection.size() != 1) { setEnabled(false); return; } setEnabled(true); mCurrentMapLocation = (MapLocation)aSelection.elementAt(0); try { mShortField.setEnabled(!mCurrentMapLocation.isPropertyInherited("short")); mShortField.setText((String)mCurrentMapLocation.getProperty("short", RoomProperties.INHERIT_DO_CHECK)); } catch (Exception ex) { ex.printStackTrace(); } if (mCurrentMapLocation.isUseAutoName()) { mUseCheckBox.setSelected(true); mFileNameField.setEnabled(false); mFileNameField.setText(mCurrentMapLocation.getAutoName()); } else { mUseCheckBox.setSelected(false); mFileNameField.setEnabled(true); mFileNameField.setText(mCurrentMapLocation.getFileName()); } } public void mapSelectionChanged(MapSelectionEvent e) { setFor(e.getMapSelection()); } class EditAction extends AbstractAction { private static final String NAME = "Edit..."; private static final String SHORT_DESCRIPTION = "Edit"; private static final String LONG_DESCRIPTION = "Edit the selected room"; public EditAction() { putValue(Action.NAME, NAME); putValue(Action.SHORT_DESCRIPTION, SHORT_DESCRIPTION); putValue(Action.LONG_DESCRIPTION, LONG_DESCRIPTION); } public void actionPerformed(ActionEvent e) { } } class DeleteAction extends AbstractAction { private static final String NAME = "Delete"; private static final String SHORT_DESCRIPTION = "Delete"; private static final String LONG_DESCRIPTION = "Delete the selected rooms"; public DeleteAction() { putValue(Action.NAME, NAME); putValue(Action.SHORT_DESCRIPTION, SHORT_DESCRIPTION); putValue(Action.LONG_DESCRIPTION, LONG_DESCRIPTION); } public void actionPerformed(ActionEvent e) { } } }