root/graph/JavaPopWeb/src/jp/ac/nime/computer/grpsimulator/OperationPanel.java

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. OperationPanel
  2. recycleCheckBoxItemStateChanged
  3. undoButtonActionPerformed
  4. setDialog
  5. getDialog
  6. setUndoEnabled
  7. addActionListener
  8. removeActionListener

package jp.ac.nime.computer.grpsimulator;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

/** OperationPanelクラスは、画像処理に対する各種パラメータやUNDOなどの
 * オペレーションを行うためのJPanelの派生クラスです
 * @author igarashi
 * @version 1.0.0
 */
public class OperationPanel extends JPanel
{

        private ActionListener actionListener_;
        private JPanel dlgPanel_;
        private JButton undoButton_;
        private JCheckBox recycleCheckBox_;

        /** OperationFrameを生成します
         */
        public OperationPanel() {
                setLayout(new BorderLayout());

                JPanel undoPanel = new JPanel();        // undoパネル(undoボタンとrecycleチェックボックスが乗る)
                undoPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 5));

                undoButton_ = new JButton();    // undoボタン作成
                undoButton_.setText(GrpSim.res_.getString("ControlUndo"));
                undoButton_.setToolTipText(GrpSim.res_.getString("ControlUndoTooltip"));
                undoButton_.setEnabled(false);
                undoButton_.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                                undoButtonActionPerformed(evt);
                        }
                });
                undoPanel.add(undoButton_);     // undoパネルにundoボタンを追加

                recycleCheckBox_ = new JCheckBox();             // recycleチェックボックス作成
                recycleCheckBox_.setText(GrpSim.res_.getString("ControlRecycle"));
                recycleCheckBox_.setToolTipText(GrpSim.res_.getString("ControlRecycleTooltip"));
                recycleCheckBox_.addItemListener(new ItemListener() {
                        public void itemStateChanged(ItemEvent evt) {
                                recycleCheckBoxItemStateChanged(evt);
                        }
                });
                undoPanel.add(recycleCheckBox_);        // undoパネルにrecycleチェックボックスを追加

                add(undoPanel, BorderLayout.NORTH);     // 北側にundoパネルを配置

                dlgPanel_ = new JPanel();
                add(dlgPanel_, BorderLayout.CENTER);    // 中央にダイアログを乗せるパネルを配置
        }

        private void recycleCheckBoxItemStateChanged(ItemEvent evt) {
                actionListener_.actionPerformed(
                        new ActionEvent(
                                evt.getSource(),
                                ActionEvent.ACTION_PERFORMED,
                                (evt.getStateChange() == ItemEvent.SELECTED) ? "RecycleOn" : "RecycleOff"
                                )
                );
        }

        private void undoButtonActionPerformed(ActionEvent evt) {
                actionListener_.actionPerformed(
                        new ActionEvent(evt.getSource(),ActionEvent.ACTION_PERFORMED,"Undo")
                );
        }

        /** 画像処理パラメータを指示するダイアログを格納します
         * 直前まで表示されていダイアログは破棄されます
         * @param dlg 表示したいダイアログのオブジェクト
         */
        public void setDialog(JPanel dlg) {
                dlgPanel_.removeAll();
                if (dlg != null) dlgPanel_.add(dlg);
        }

        public JPanel getDialog() {
                for (int i = 0; i < dlgPanel_.getComponentCount(); i ++) {
                        Component com = dlgPanel_.getComponent(i);
                        if (com instanceof JPanel) {
                                return (JPanel) com;
                        }
                }
                return null;
        }

        /** UNDOボタンの有効/無効を切り替えます
         * @param bEnabled trueを指定するとUndoボタンが有効になります
         */
        public void setUndoEnabled( boolean bEnabled ) {
                undoButton_.setEnabled(bEnabled);
        }

        public void addActionListener(ActionListener listener) {
                actionListener_ = AWTEventMulticaster.add(actionListener_, listener);
        }
        public void removeActionListener(ActionListener listener) {
                actionListener_ = AWTEventMulticaster.remove(actionListener_, listener);
        }
}

/* [<][>][^][v][top][bottom][index][help] */