KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > genimen > djeneric > tools > specifier > components > DjTextArea


1 /*
2  * Copyright (c) 2001-2005 by Genimen BV (www.genimen.com) All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, is permitted provided that the following conditions are met: -
6  * Redistributions of source code must retain the above copyright notice, this
7  * list of conditions and the following disclaimer. - Redistributions in binary
8  * form must reproduce the above copyright notice, this list of conditions and
9  * the following disclaimer in the documentation and/or other materials
10  * provided with the distribution. - All advertising materials mentioning
11  * features or use of this software must display the following acknowledgment:
12  * "This product includes Djeneric." - Products derived from this software may
13  * not be called "Djeneric" nor may "Djeneric" appear in their names without
14  * prior written permission of Genimen BV. - Redistributions of any form
15  * whatsoever must retain the following acknowledgment: "This product includes
16  * Djeneric."
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL GENIMEN BV, DJENERIC.ORG, OR CONTRIBUTORS
22  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */

30 package com.genimen.djeneric.tools.specifier.components;
31
32 import java.awt.event.FocusEvent JavaDoc;
33 import java.awt.event.FocusListener JavaDoc;
34 import java.awt.event.KeyEvent JavaDoc;
35
36 import javax.swing.JComponent JavaDoc;
37 import javax.swing.JTextArea JavaDoc;
38 import javax.swing.undo.UndoManager JavaDoc;
39
40 import com.genimen.djeneric.repository.exceptions.DjenericException;
41 import com.genimen.djeneric.tools.specifier.interfaces.ObjectViewer;
42 import com.genimen.djeneric.util.DjLogger;
43
44 public class DjTextArea extends JTextArea JavaDoc implements DjBindable, FocusListener JavaDoc
45 {
46   private static final long serialVersionUID = 1L;
47   final UndoManager JavaDoc undomanager = new UndoManager JavaDoc();
48   private BindingMediator _mediator;
49
50   public DjTextArea(ObjectViewer viewer, String JavaDoc propertyName) throws DjenericException
51   {
52     super();
53     addKeyListener(new DjTextArea__editor_keyAdapter(this));
54     getDocument().addUndoableEditListener(this.undomanager);
55     undomanager.setLimit(50000);
56     addFocusListener(this);
57     _mediator = new BindingMediator(this, viewer, propertyName);
58   }
59
60   public void clear()
61   {
62     setText("");
63   }
64
65   public boolean isComponentWritable()
66   {
67     return _mediator.isComponentWritable();
68   }
69
70   public void apply() throws DjenericException
71   {
72     _mediator.setValue(getText());
73   }
74
75   public void focusGained(FocusEvent JavaDoc e)
76   {
77   }
78
79   public void focusLost(FocusEvent JavaDoc e)
80   {
81     try
82     {
83       apply();
84       synchronize();
85     }
86     catch (Exception JavaDoc x)
87     {
88       DjLogger.log(x);
89     }
90   }
91
92   public void setPropertyName(String JavaDoc propertyName) throws DjenericException
93   {
94     _mediator.setPropertyName(propertyName);
95   }
96
97   public void setViewer(ObjectViewer viewer)
98   {
99     _mediator.setViewer(viewer);
100   }
101
102   public void synchronize() throws DjenericException
103   {
104     setText(_mediator.getPropertyValueString());
105     setCaretPosition(0);
106     undomanager.discardAllEdits();
107   }
108
109   public Object JavaDoc getDisplayedValue()
110   {
111     return getText();
112   }
113
114   public String JavaDoc getPropertyName()
115   {
116     return _mediator.getPropertyName();
117   }
118
119   public JComponent JavaDoc getFocussableComponent()
120   {
121     return this;
122   }
123
124   public void editorKeypressed(KeyEvent JavaDoc e)
125   {
126     if (e.getKeyCode() == KeyEvent.VK_Z)
127     {
128       if (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK)
129       {
130         if (undomanager.canUndo())
131         {
132           undomanager.undo();
133         }
134
135       }
136     }
137     if (e.getKeyCode() == KeyEvent.VK_Y)
138     {
139       if (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK)
140       {
141         if (undomanager.canRedo())
142         {
143           undomanager.redo();
144         }
145
146       }
147     }
148   }
149 }
150
151 class DjTextArea__editor_keyAdapter extends java.awt.event.KeyAdapter JavaDoc
152 {
153   DjTextArea adaptee;
154
155   DjTextArea__editor_keyAdapter(DjTextArea adaptee)
156   {
157     this.adaptee = adaptee;
158   }
159
160   public void keyPressed(KeyEvent JavaDoc e)
161   {
162     adaptee.editorKeypressed(e);
163   }
164 }
Popular Tags