OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 17 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
17 ilm 1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
182 ilm 4
 * Copyright 2011-2019 OpenConcerto, by ILM Informatique. All rights reserved.
17 ilm 5
 *
6
 * The contents of this file are subject to the terms of the GNU General Public License Version 3
7
 * only ("GPL"). You may not use this file except in compliance with the License. You can obtain a
8
 * copy of the License at http://www.gnu.org/licenses/gpl-3.0.html See the License for the specific
9
 * language governing permissions and limitations under the License.
10
 *
11
 * When distributing the software, include this License Header Notice in each file.
12
 */
13
 
14
 /*
15
 * Créé le 3 avr. 2005
16
 *
17
 */
18
package org.openconcerto.ui;
19
import java.awt.BorderLayout;
20
import java.awt.Color;
21
import java.awt.Container;
22
import java.awt.Dimension;
23
import java.awt.Font;
24
import java.awt.Image;
25
import java.awt.Point;
26
import java.awt.Toolkit;
27
import java.awt.event.ActionEvent;
28
import java.awt.event.ActionListener;
29
import java.awt.event.MouseEvent;
30
import java.awt.event.MouseListener;
31
import java.awt.font.FontRenderContext;
32
import java.net.URL;
33
import java.util.Vector;
34
 
35
import javax.swing.BorderFactory;
36
import javax.swing.ImageIcon;
37
import javax.swing.JButton;
38
import javax.swing.JLabel;
39
import javax.swing.JList;
40
import javax.swing.JMenuItem;
41
import javax.swing.JPanel;
42
import javax.swing.JViewport;
43
import javax.swing.JWindow;
44
import javax.swing.Timer;
45
 
46
class IWindowWithArrow extends JWindow
47
 implements MouseListener, ActionListener
48
{
49
 
50
 public IWindowWithArrow(IMenuWithArrows arrowmenu)
51
 {
52
     fontSize = 12;
53
     up = null;
54
     down = null;
55
     timer = null;
56
     initialDelay = 300;
57
     repeatDelay = 50;
58
     increment = 0;
59
     menu = arrowmenu;
60
     items = new Vector();
61
     viewport = new JViewport();
62
     list = new JList();
63
     font = new Font(null, 0, fontSize);
64
     list.setFont(font);
65
     list.setBackground(new Color(207, 207, 207));
66
     list.setForeground(Color.BLACK);
67
     list.setSelectionBackground(new Color(144, 151, 207));
68
     list.setSelectionForeground(Color.BLACK);
69
     //list.setVisibleRowCount(10);
70
 
71
 
72
     list.addMouseListener(this);
73
     viewport.setView(list);
74
     resource = getClass().getResource("arrow-up.gif");
75
     up = new JButton(new ImageIcon(resource));
76
     up.setBackground(new Color(207, 207, 207));
77
     up.setBorder(null);
78
     up.addMouseListener(this);
79
     resource = getClass().getResource("arrow-down.gif");
80
     down = new JButton(new ImageIcon(resource));
81
     down.setBackground(new Color(207, 207, 207));
82
     down.setBorder(null);
83
     down.addMouseListener(this);
84
     Container container = getContentPane();
85
     JPanel jpanel = new JPanel();
86
     jpanel.setBorder(BorderFactory.createBevelBorder(0));
87
     jpanel.setLayout(new BorderLayout());
88
     jpanel.add(up, "North");
89
     jpanel.add(viewport, "Center");
90
     jpanel.add(down, "South");
91
     container.add(jpanel);
92
     timer = new Timer(repeatDelay, this);
93
     timer.setInitialDelay(initialDelay);
94
 }
95
 
96
 public void add(JMenuItem jmenuitem)
97
 {
98
     AItem aitem = new AItem(jmenuitem);
99
     items.addElement(aitem);
100
     list.setListData(items);
101
 }
102
 
103
 public void setVisible(boolean flag)
104
 {
105
     int i = 0;
106
     int j = 0;
107
     FontRenderContext fontrendercontext = new FontRenderContext(null, false, false);
108
     for(int k = 0; k < items.size(); k++)
109
     {
110
         float f = (float)font.getStringBounds(((AItem)items.elementAt(k)).label, fontrendercontext).getWidth();
111
         if(f > (float)i)
112
             i = (int)f;
113
     }
114
 
115
     Point point = getLocation();
116
     Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
117
     j = dimension.height - point.y - 30;
118
     index = 0;
119
     viewport.setViewPosition(list.indexToLocation(0));
120
     list.setSelectedIndex(0);
121
     setSize(i, j);
122
     super.setVisible(flag);
123
 }
124
 
125
 public void mousePressed(MouseEvent mouseevent)
126
 {
127
     increment = 0;
128
     if(mouseevent.getSource() == up)
129
     {
130
         if(index > 0)
131
         {
132
             increment = -1;
133
             timer.start();
134
         }
135
     } else
136
     if(mouseevent.getSource() == down && list.getLastVisibleIndex() < items.size() - 1)
137
     {
138
         increment = 1;
139
         timer.start();
140
     }
141
     index += increment;
142
     viewport.setViewPosition(list.indexToLocation(index));
143
 }
144
 
145
 public void mouseReleased(MouseEvent mouseevent)
146
 {
147
     if(timer != null)
148
         timer.stop();
149
     if(mouseevent.getSource() == list)
150
     {
151
         ((AItem)items.elementAt(list.getSelectedIndex())).menuItem.doClick();
152
         menu.fireMenuCanceled();
153
     }
154
 }
155
 
156
 public void mouseClicked(MouseEvent mouseevent)
157
 {
158
 }
159
 
160
 public void mouseEntered(MouseEvent mouseevent)
161
 {
162
 }
163
 
164
 public void mouseExited(MouseEvent mouseevent)
165
 {
166
 }
167
 
168
 public void actionPerformed(ActionEvent actionevent)
169
 {
170
     if(increment == 1)
171
     {
172
         if(list.getLastVisibleIndex() < items.size() - 1)
173
             index++;
174
     } else
175
     if(increment == -1 && index > 0)
176
         index--;
177
     viewport.setViewPosition(list.indexToLocation(index));
178
 }
179
IMenuWithArrows menu;
180
 JList list;
181
 JViewport viewport;
182
 Vector items;
183
 Font font;
184
 int fontSize;
185
 JButton up;
186
 JButton down;
187
 int index;
188
 Timer timer;
189
 int initialDelay;
190
 int repeatDelay;
191
 int increment;
192
 Image image;
193
 URL resource;
194
 
195
 class AItem
196
 {
197
 
198
     public AItem(JMenuItem jmenuitem)
199
     {
200
         menuItem = jmenuitem;
201
         label = jmenuitem.getText();
202
     }
203
 
204
     public String toString()
205
     {
206
         return label;
207
     }
208
 
209
     JMenuItem menuItem;
210
     String label;
211
 }
212
}