001    // This file is part of AceWiki.
002    // Copyright 2008-2012, AceWiki developers.
003    // 
004    // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
005    // Lesser General Public License as published by the Free Software Foundation, either version 3 of
006    // the License, or (at your option) any later version.
007    // 
008    // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
009    // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
010    // Lesser General Public License for more details.
011    // 
012    // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
013    // not, see http://www.gnu.org/licenses/.
014    
015    package ch.uzh.ifi.attempto.echocomp;
016    
017    import nextapp.echo.app.Alignment;
018    import nextapp.echo.app.Column;
019    import nextapp.echo.app.Extent;
020    import nextapp.echo.app.Font;
021    import nextapp.echo.app.Insets;
022    import nextapp.echo.app.Row;
023    import nextapp.echo.app.WindowPane;
024    import nextapp.echo.app.event.ActionEvent;
025    import nextapp.echo.app.event.ActionListener;
026    
027    /**
028     * This class represents a window that contains a text area plus "OK" and "Cancel" buttons.
029     * 
030     * @author Tobias Kuhn
031     */
032    public class TextAreaWindow extends WindowPane implements ActionListener {
033            
034            private static final long serialVersionUID = -8910244587508187438L;
035            
036            private ActionListener actionListener;
037            
038            private TextArea textArea;
039            
040            /**
041             * Creates a new text area window with the given title, text, and action-listener.
042             * 
043             * @param title The title of the window.
044             * @param text The initial text in the text area.
045             * @param actionListener The action-listener or null.
046             */
047            public TextAreaWindow(String title, String text, ActionListener actionListener) {
048                    this.actionListener = actionListener;
049                    
050                    setModal(true);
051                    setTitle(title);
052                    setTitleFont(new Font(Style.fontTypeface, Font.ITALIC, new Extent(13)));
053                    setResizable(false);
054                    setTitleBackground(Style.windowTitleBackground);
055                    setStyleName("Default");
056                    
057                    Column mainColumn = new Column();
058                    mainColumn.setInsets(new Insets(10, 10));
059                    mainColumn.setCellSpacing(new Extent(10));
060                    
061                    textArea = new TextArea();
062                    textArea.setFont(new Font(Style.fontTypeface, Font.ITALIC, new Extent(13)));
063                    textArea.setText(text);
064                    mainColumn.add(textArea);
065                    
066                    Row buttonBar = new Row();
067                    buttonBar.setAlignment(new Alignment(Alignment.RIGHT, Alignment.CENTER));
068                    buttonBar.setCellSpacing(new Extent(5));
069                    GeneralButton okButton = new GeneralButton("OK", 70, this);
070                    buttonBar.add(okButton);
071                    GeneralButton cancelButton = new GeneralButton("Cancel", 70, this);
072                    buttonBar.add(cancelButton);
073                    mainColumn.add(buttonBar);
074                    
075                    add(mainColumn);
076                    
077                    setSize(450, 300);
078            }
079    
080            /**
081             * Creates a new text area window with an empty text area and the given title and
082             * action-listener.
083             * 
084             * @param title The title of the window.
085             * @param actionListener The action-listener or null.
086             */
087            public TextAreaWindow(String title, ActionListener actionListener) {
088                    this(title, "", actionListener);
089            }
090            
091            /**
092             * Returns the text of the text area.
093             * 
094             * @return The text of the text area.
095             */
096            public String getText() {
097                    return textArea.getText();
098            }
099            
100            /**
101             * Sets the text of the text area.
102             * 
103             * @param text The new text of the text area.
104             */
105            public void setText(String text) {
106                    textArea.setText(text);
107            }
108            
109            /**
110             * Sets the size of the text area window. The size of the text area is set accordingly.
111             * 
112             * @param width The width of the window in pixels.
113             * @param height The height of the window in pixels.
114             */
115            public void setSize(int width, int height) {
116                    if (width < 200) width = 200;
117                    if (height < 120) height = 120;
118                    setWidth(new Extent(width));
119                    setHeight(new Extent(height));
120                    textArea.setWidth(new Extent(width - 45));
121                    textArea.setHeight(new Extent(height - 105));
122            }
123            
124            public void actionPerformed(ActionEvent e) {
125                    if (actionListener != null) {
126                            actionListener.actionPerformed(new ActionEvent(this, e.getActionCommand()));
127                    }
128                    setVisible(false);
129                    dispose();
130            }
131    
132    }