KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > mlw > vlh > swing > support > DefaultPagingPanel


1 /**
2  * Copyright (c) 2003 held jointly by the individual authors.
3  *
4  * This library is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published
6  * by the Free Software Foundation; either version 2.1 of the License, or
7  * (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; with out even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this library; if not, write to the Free Software Foundation,
16  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17  *
18  * > http://www.gnu.org/copyleft/lesser.html
19  * > http://www.opensource.org/licenses/lgpl-license.php
20  */

21 package net.mlw.vlh.swing.support;
22
23 import java.awt.GridBagConstraints JavaDoc;
24 import java.awt.GridBagLayout JavaDoc;
25 import java.awt.Insets JavaDoc;
26 import java.awt.event.ActionListener JavaDoc;
27 import java.text.MessageFormat JavaDoc;
28 import java.util.ResourceBundle JavaDoc;
29
30 import javax.swing.JButton JavaDoc;
31 import javax.swing.JLabel JavaDoc;
32 import javax.swing.JPanel JavaDoc;
33 import javax.swing.SwingConstants JavaDoc;
34
35 import net.mlw.vlh.PagingInfo;
36 import net.mlw.vlh.swing.PagingComponent;
37 import net.mlw.vlh.swing.ValueListHelper;
38
39 /**
40  * @author Matthew L. Wilson, Andrej Zachar
41  * @version $Revision: 1.6 $ $Date: 2006/04/18 17:15:24 $
42  */

43 public class DefaultPagingPanel extends JPanel JavaDoc implements PagingComponent
44 {
45    private ActionListener JavaDoc actionListener;
46
47    private PagingInfo pagingInfo = null;
48
49    private JLabel JavaDoc description = new JLabel JavaDoc();
50
51    private ResourceBundle JavaDoc resourceBundle;
52
53    private JButton JavaDoc first;
54
55    private JButton JavaDoc previous;
56
57    private JButton JavaDoc next;
58
59    private JButton JavaDoc last;
60
61    private String JavaDoc pagingLabel = null;
62
63    public DefaultPagingPanel()
64    {
65       first = new JButton JavaDoc(new ArrowIcon(SwingConstants.LEFT, 2));
66       first.setActionCommand(ValueListHelper.ACTION_COMMAND_FIRST);
67       first.setEnabled(false);
68
69       previous = new JButton JavaDoc(new ArrowIcon(SwingConstants.LEFT));
70       previous.setActionCommand(ValueListHelper.ACTION_COMMAND_PREVIOUS);
71       previous.setEnabled(false);
72
73       next = new JButton JavaDoc(new ArrowIcon(SwingConstants.RIGHT));
74       next.setActionCommand(ValueListHelper.ACTION_COMMAND_NEXT);
75       next.setEnabled(false);
76
77       last = new JButton JavaDoc(new ArrowIcon(SwingConstants.RIGHT, 2));
78       last.setActionCommand(ValueListHelper.ACTION_COMMAND_LAST);
79       last.setEnabled(false);
80
81       init();
82    }
83
84    protected void init()
85    {
86       setLayout(new GridBagLayout JavaDoc());
87       GridBagConstraints JavaDoc gbc = new java.awt.GridBagConstraints JavaDoc();
88       gbc.insets = new Insets JavaDoc(1, 1, 1, 1);
89
90       gbc.gridx = 0;
91       gbc.weightx = 0.2;
92       gbc.anchor = GridBagConstraints.WEST;
93       add(description, gbc);
94
95       gbc.gridx = 1;
96       gbc.weightx = 0.1;
97       gbc.anchor = GridBagConstraints.CENTER;
98       add(first);
99
100       gbc.gridx = 2;
101       add(previous);
102
103       gbc.gridx = 3;
104       add(next);
105
106       gbc.gridx = 4;
107       add(last);
108    }
109
110    public void setPagingInfo(PagingInfo pagingInfo)
111    {
112       this.pagingInfo = pagingInfo;
113       int numberOfPages = pagingInfo.getTotalNumberOfEntries() / pagingInfo.getPagingNumberPer() + 1;
114
115       Object JavaDoc[] messageParameters = new Object JavaDoc[]
116       { new Integer JavaDoc(pagingInfo.getPagingPage()), new Integer JavaDoc(pagingInfo.getTotalNumberOfPages()), new Integer JavaDoc(pagingInfo
117             .getTotalNumberOfEntries()) };
118
119       if (pagingLabel == null)
120       {
121          description.setText(MessageFormat.format(resourceBundle.getString("paging.text.pageFromTotal"), messageParameters));
122       }
123       else
124       {
125          description.setText(MessageFormat.format(pagingLabel, messageParameters));
126       }
127
128       first.setEnabled(pagingInfo.getPagingPage() > 1);
129       previous.setEnabled(pagingInfo.getPagingPage() > 1);
130       next.setEnabled(pagingInfo.getPagingPage() < pagingInfo.getTotalNumberOfPages());
131       last.setEnabled(pagingInfo.getPagingPage() < pagingInfo.getTotalNumberOfPages());
132    }
133
134    /**
135     * @param actionListener
136     * The actionListener to set.
137     */

138    public void addActionListener(ActionListener JavaDoc actionListener)
139    {
140       first.addActionListener(actionListener);
141       previous.addActionListener(actionListener);
142       next.addActionListener(actionListener);
143       last.addActionListener(actionListener);
144    }
145
146    /**
147     * @return Returns the resourceBundle.
148     * If no resourceBundle is defined, it uses the classicLook.properties file. Thus it should be located in the classpath.
149     */

150    public ResourceBundle JavaDoc getResourceBundle()
151    {
152       if (resourceBundle == null)
153       {
154          resourceBundle = ResourceBundle.getBundle("swingLook");
155       }
156       return resourceBundle;
157    }
158
159    /**
160     * @param resourceBundle
161     * The resourceBundle to set.
162     */

163    public void setResourceBundle(ResourceBundle JavaDoc resourceBundle)
164    {
165       this.resourceBundle = resourceBundle;
166    }
167
168    public void setPagingLabel(String JavaDoc pagingLabel)
169    {
170       this.pagingLabel = pagingLabel;
171    }
172 }
Popular Tags