jdk

Форк
0
/
MetalworksPrefs.java 
262 строки · 8.6 Кб
1
/*
2
 * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
3
 *
4
 * Redistribution and use in source and binary forms, with or without
5
 * modification, are permitted provided that the following conditions
6
 * are met:
7
 *
8
 *   - Redistributions of source code must retain the above copyright
9
 *     notice, this list of conditions and the following disclaimer.
10
 *
11
 *   - Redistributions in binary form must reproduce the above copyright
12
 *     notice, this list of conditions and the following disclaimer in the
13
 *     documentation and/or other materials provided with the distribution.
14
 *
15
 *   - Neither the name of Oracle nor the names of its
16
 *     contributors may be used to endorse or promote products derived
17
 *     from this software without specific prior written permission.
18
 *
19
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
 */
31

32
/*
33
 * This source code is provided to illustrate the usage of a given feature
34
 * or technique and has been deliberately simplified. Additional steps
35
 * required for a production-quality application, such as security checks,
36
 * input validation and proper error handling, might not be present in
37
 * this sample code.
38
 */
39

40

41

42
import java.awt.BorderLayout;
43
import java.awt.Component;
44
import java.awt.Container;
45
import java.awt.Dimension;
46
import java.awt.FlowLayout;
47
import java.awt.GridLayout;
48
import java.awt.Insets;
49
import java.awt.LayoutManager;
50
import java.awt.event.ActionEvent;
51
import java.awt.event.ActionListener;
52
import javax.swing.ButtonGroup;
53
import javax.swing.JButton;
54
import javax.swing.JCheckBox;
55
import javax.swing.JComboBox;
56
import javax.swing.JDialog;
57
import javax.swing.JFrame;
58
import javax.swing.JLabel;
59
import javax.swing.JPanel;
60
import javax.swing.JRadioButton;
61
import javax.swing.JTabbedPane;
62
import javax.swing.UIManager;
63
import javax.swing.border.TitledBorder;
64

65

66
/**
67
 * This is dialog which allows users to choose preferences
68
 *
69
 * @author Steve Wilson
70
 * @author Alexander Kouznetsov
71
 */
72
@SuppressWarnings("serial")
73
public final class MetalworksPrefs extends JDialog {
74

75
    public MetalworksPrefs(JFrame f) {
76
        super(f, "Preferences", true);
77
        JPanel container = new JPanel();
78
        container.setLayout(new BorderLayout());
79

80
        JTabbedPane tabs = new JTabbedPane();
81
        JPanel filters = buildFilterPanel();
82
        JPanel conn = buildConnectingPanel();
83
        tabs.addTab("Filters", null, filters);
84
        tabs.addTab("Connecting", null, conn);
85

86

87
        JPanel buttonPanel = new JPanel();
88
        buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
89
        JButton cancel = new JButton("Cancel");
90
        cancel.addActionListener(new ActionListener() {
91

92
            public void actionPerformed(ActionEvent e) {
93
                CancelPressed();
94
            }
95
        });
96
        buttonPanel.add(cancel);
97
        JButton ok = new JButton("OK");
98
        ok.addActionListener(new ActionListener() {
99

100
            public void actionPerformed(ActionEvent e) {
101
                OKPressed();
102
            }
103
        });
104
        buttonPanel.add(ok);
105
        getRootPane().setDefaultButton(ok);
106

107
        container.add(tabs, BorderLayout.CENTER);
108
        container.add(buttonPanel, BorderLayout.SOUTH);
109
        getContentPane().add(container);
110
        pack();
111
        centerDialog();
112
        UIManager.addPropertyChangeListener(new UISwitchListener(container));
113
    }
114

115
    public JPanel buildFilterPanel() {
116
        JPanel filters = new JPanel();
117
        filters.setLayout(new GridLayout(1, 0));
118

119
        JPanel spamPanel = new JPanel();
120

121
        spamPanel.setLayout(new ColumnLayout());
122
        spamPanel.setBorder(new TitledBorder("Spam"));
123
        ButtonGroup spamGroup = new ButtonGroup();
124
        JRadioButton file = new JRadioButton("File in Spam Folder");
125
        JRadioButton delete = new JRadioButton("Auto Delete");
126
        JRadioButton bomb = new JRadioButton("Reverse Mail-Bomb");
127
        spamGroup.add(file);
128
        spamGroup.add(delete);
129
        spamGroup.add(bomb);
130
        spamPanel.add(file);
131
        spamPanel.add(delete);
132
        spamPanel.add(bomb);
133
        file.setSelected(true);
134
        filters.add(spamPanel);
135

136
        JPanel autoRespond = new JPanel();
137
        autoRespond.setLayout(new ColumnLayout());
138
        autoRespond.setBorder(new TitledBorder("Auto Response"));
139

140
        ButtonGroup respondGroup = new ButtonGroup();
141
        JRadioButton none = new JRadioButton("None");
142
        JRadioButton vaca = new JRadioButton("Send Vacation Message");
143
        JRadioButton thx = new JRadioButton("Send Thank You Message");
144

145
        respondGroup.add(none);
146
        respondGroup.add(vaca);
147
        respondGroup.add(thx);
148

149
        autoRespond.add(none);
150
        autoRespond.add(vaca);
151
        autoRespond.add(thx);
152

153
        none.setSelected(true);
154
        filters.add(autoRespond);
155

156
        return filters;
157
    }
158

159
    public JPanel buildConnectingPanel() {
160
        JPanel connectPanel = new JPanel();
161
        connectPanel.setLayout(new ColumnLayout());
162

163
        JPanel protoPanel = new JPanel();
164
        JLabel protoLabel = new JLabel("Protocol");
165
        JComboBox<String> protocol = new JComboBox<>();
166
        protocol.addItem("SMTP");
167
        protocol.addItem("IMAP");
168
        protocol.addItem("Other...");
169
        protoPanel.add(protoLabel);
170
        protoPanel.add(protocol);
171

172
        JPanel attachmentPanel = new JPanel();
173
        JLabel attachmentLabel = new JLabel("Attachments");
174
        JComboBox<String> attach = new JComboBox<>();
175
        attach.addItem("Download Always");
176
        attach.addItem("Ask size > 1 Meg");
177
        attach.addItem("Ask size > 5 Meg");
178
        attach.addItem("Ask Always");
179
        attachmentPanel.add(attachmentLabel);
180
        attachmentPanel.add(attach);
181

182
        JCheckBox autoConn = new JCheckBox("Auto Connect");
183
        JCheckBox compress = new JCheckBox("Use Compression");
184
        autoConn.setSelected(true);
185

186
        connectPanel.add(protoPanel);
187
        connectPanel.add(attachmentPanel);
188
        connectPanel.add(autoConn);
189
        connectPanel.add(compress);
190
        return connectPanel;
191
    }
192

193
    protected void centerDialog() {
194
        Dimension screenSize = this.getToolkit().getScreenSize();
195
        Dimension size = this.getSize();
196
        screenSize.height = screenSize.height / 2;
197
        screenSize.width = screenSize.width / 2;
198
        size.height = size.height / 2;
199
        size.width = size.width / 2;
200
        int y = screenSize.height - size.height;
201
        int x = screenSize.width - size.width;
202
        this.setLocation(x, y);
203
    }
204

205
    public void CancelPressed() {
206
        this.setVisible(false);
207
    }
208

209
    public void OKPressed() {
210
        this.setVisible(false);
211
    }
212
}
213

214

215
class ColumnLayout implements LayoutManager {
216

217
    int xInset = 5;
218
    int yInset = 5;
219
    int yGap = 2;
220

221
    public void addLayoutComponent(String s, Component c) {
222
    }
223

224
    public void layoutContainer(Container c) {
225
        Insets insets = c.getInsets();
226
        int height = yInset + insets.top;
227

228
        Component[] children = c.getComponents();
229
        Dimension compSize = null;
230
        for (Component child : children) {
231
            compSize = child.getPreferredSize();
232
            child.setSize(compSize.width, compSize.height);
233
            child.setLocation(xInset + insets.left, height);
234
            height += compSize.height + yGap;
235
        }
236

237
    }
238

239
    public Dimension minimumLayoutSize(Container c) {
240
        Insets insets = c.getInsets();
241
        int height = yInset + insets.top;
242
        int width = 0 + insets.left + insets.right;
243

244
        Component[] children = c.getComponents();
245
        Dimension compSize = null;
246
        for (Component child : children) {
247
            compSize = child.getPreferredSize();
248
            height += compSize.height + yGap;
249
            width = Math.max(width, compSize.width + insets.left + insets.right + xInset
250
                    * 2);
251
        }
252
        height += insets.bottom;
253
        return new Dimension(width, height);
254
    }
255

256
    public Dimension preferredLayoutSize(Container c) {
257
        return minimumLayoutSize(c);
258
    }
259

260
    public void removeLayoutComponent(Component c) {
261
    }
262
}
263

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.