KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mullassery > act > gui > components > TTextField


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
5  * reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  * notice, this list of conditions and the following disclaimer in
16  * the documentation and/or other materials provided with the
17  * distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if
20  * any, must include the following acknowlegement:
21  * "This product includes software developed by the
22  * Apache Software Foundation (http://www.apache.org/)."
23  * Alternately, this acknowlegement may appear in the software itself,
24  * if and wherever such third-party acknowlegements normally appear.
25  *
26  * 4. The names "The Jakarta Project", "Ant", and "Apache Software
27  * Foundation" must not be used to endorse or promote products derived
28  * from this software without prior written permission. For written
29  * permission, please contact apache@apache.org.
30  *
31  * 5. Products derived from this software may not be called "Apache"
32  * nor may "Apache" appear in their names without prior written
33  * permission of the Apache Group.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Apache Software Foundation. For more
51  * information on the Apache Software Foundation, please see
52  * <http://www.apache.org/>.
53  */

54
55 package com.mullassery.act.gui.components;
56
57 import java.awt.Dimension JavaDoc;
58 import java.awt.Toolkit JavaDoc;
59 import java.awt.datatransfer.DataFlavor JavaDoc;
60 import java.awt.datatransfer.Transferable JavaDoc;
61 import java.awt.event.ActionEvent JavaDoc;
62 import java.awt.event.MouseAdapter JavaDoc;
63 import java.awt.event.MouseEvent JavaDoc;
64
65 import javax.swing.AbstractAction JavaDoc;
66 import javax.swing.JMenuItem JavaDoc;
67 import javax.swing.JPopupMenu JavaDoc;
68 import javax.swing.JTextField JavaDoc;
69
70 import com.mullassery.act.gui.TextData;
71
72 /**
73  *
74  * @author Abey Mullassery
75  *
76  */

77 public class TTextField extends JTextField JavaDoc implements TextData{
78     private JPopupMenu JavaDoc popup;
79     /** Creates a new instance of STextField */
80     public TTextField() {
81         this(null);
82     }
83     
84     /** Creates a new instance of STextField */
85     public TTextField(String JavaDoc val) {
86         this(val, 200, 20);
87     }
88
89     /** Creates a new instance of STextField */
90     public TTextField(String JavaDoc val, int w) {
91         this(val, w, 20);
92     }
93
94     /** Creates a new instance of STextField */
95     public TTextField(String JavaDoc val, int w, int h) {
96         super(val);
97         setPreferredSize(new Dimension JavaDoc(w, h));
98         addMouseListener(new MouseAdapter JavaDoc() {
99             public void mousePressed(MouseEvent JavaDoc e) {
100                 showPopup(e);
101             }
102             public void mouseReleased(MouseEvent JavaDoc e) {
103                 showPopup(e);
104             }
105         });
106     }
107
108     private void showPopup(MouseEvent JavaDoc e) {
109         if (e.isPopupTrigger()) {
110             if (popup == null) {
111                 popup = new JPopupMenu JavaDoc();
112                 popup.add(new TextEditAction("cut"));
113                 popup.add(new TextEditAction("copy"));
114                 popup.add(new TextEditAction("paste"));
115             }
116             JMenuItem JavaDoc cut = (JMenuItem JavaDoc)popup.getComponent(0);
117             JMenuItem JavaDoc copy = (JMenuItem JavaDoc)popup.getComponent(1);
118             String JavaDoc str = getSelectedText();
119             if (str != null && str.length() > 0) {
120                 cut.setEnabled(true);
121                 copy.setEnabled(true);
122             } else {
123                 cut.setEnabled(false);
124                 copy.setEnabled(false);
125             }
126             JMenuItem JavaDoc paste = (JMenuItem JavaDoc)popup.getComponent(2);
127             Transferable JavaDoc content = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(this);
128             if (content.isDataFlavorSupported(DataFlavor.stringFlavor)) {
129                 paste.setEnabled(true);
130             } else {
131                 paste.setEnabled(false);
132             }
133             popup.show(this, e.getX(), e.getY());
134         }
135     }
136
137     private class TextEditAction extends AbstractAction JavaDoc {
138         String JavaDoc name;
139         TextEditAction(String JavaDoc name) {
140             super(name);
141             this.name = name;
142         }
143
144         public void actionPerformed(ActionEvent JavaDoc e) {
145             if (this.name.equals("cut")) {
146                 cut();
147             } else if (this.name.equals("copy")) {
148                 copy();
149             } else if (this.name.equals("paste")) {
150                 paste();
151             }
152         }
153     }
154 }
Popular Tags