/*
* Copyright ( c ) 1998 , 2011 , Oracle and / or its affiliates . All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
*
* - Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
*
* - Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS " AS
* IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO ,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
* EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO ,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR
* PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified . Additional steps
* required for a production - quality application , such as security checks ,
* input validation and proper error handling , might not be present in
* this sample code .
*/
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTabbedPane;
import javax.swing.UIManager;
import javax.swing.border.TitledBorder;
/**
* This is dialog which allows users to choose preferences
*
* @ author Steve Wilson
* @ author Alexander Kouznetsov
*/
@SuppressWarnings("serial" )
public final class MetalworksPrefs extends JDialog {
public MetalworksPrefs(JFrame f) {
super (f, "Preferences" , true );
JPanel container = new JPanel();
container.setLayout(new BorderLayout());
JTabbedPane tabs = new JTabbedPane();
JPanel filters = buildFilterPanel();
JPanel conn = buildConnectingPanel();
tabs.addTab("Filters" , null , filters);
tabs.addTab("Connecting" , null , conn);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
JButton cancel = new JButton("Cancel" );
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CancelPressed();
}
});
buttonPanel.add(cancel);
JButton ok = new JButton("OK" );
ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
OKPressed();
}
});
buttonPanel.add(ok);
getRootPane().setDefaultButton(ok);
container.add(tabs, BorderLayout.CENTER);
container.add(buttonPanel, BorderLayout.SOUTH);
getContentPane().add(container);
pack();
centerDialog();
UIManager.addPropertyChangeListener(new UISwitchListener(container));
}
public JPanel buildFilterPanel() {
JPanel filters = new JPanel();
filters.setLayout(new GridLayout(1 , 0 ));
JPanel spamPanel = new JPanel();
spamPanel.setLayout(new ColumnLayout());
spamPanel.setBorder(new TitledBorder("Spam" ));
ButtonGroup spamGroup = new ButtonGroup();
JRadioButton file = new JRadioButton("File in Spam Folder" );
JRadioButton delete = new JRadioButton("Auto Delete" );
JRadioButton bomb = new JRadioButton("Reverse Mail-Bomb" );
spamGroup.add(file);
spamGroup.add(delete );
spamGroup.add(bomb);
spamPanel.add(file);
spamPanel.add(delete );
spamPanel.add(bomb);
file.setSelected(true );
filters.add(spamPanel);
JPanel autoRespond = new JPanel();
autoRespond.setLayout(new ColumnLayout());
autoRespond.setBorder(new TitledBorder("Auto Response" ));
ButtonGroup respondGroup = new ButtonGroup();
JRadioButton none = new JRadioButton("None" );
JRadioButton vaca = new JRadioButton("Send Vacation Message" );
JRadioButton thx = new JRadioButton("Send Thank You Message" );
respondGroup.add(none);
respondGroup.add(vaca);
respondGroup.add(thx);
autoRespond.add(none);
autoRespond.add(vaca);
autoRespond.add(thx);
none.setSelected(true );
filters.add(autoRespond);
return filters;
}
public JPanel buildConnectingPanel() {
JPanel connectPanel = new JPanel();
connectPanel.setLayout(new ColumnLayout());
JPanel protoPanel = new JPanel();
JLabel protoLabel = new JLabel("Protocol" );
JComboBox<String> protocol = new JComboBox<>();
protocol.addItem("SMTP" );
protocol.addItem("IMAP" );
protocol.addItem("Other..." );
protoPanel.add(protoLabel);
protoPanel.add(protocol);
JPanel attachmentPanel = new JPanel();
JLabel attachmentLabel = new JLabel("Attachments" );
JComboBox<String> attach = new JComboBox<>();
attach.addItem("Download Always" );
attach.addItem("Ask size > 1 Meg" );
attach.addItem("Ask size > 5 Meg" );
attach.addItem("Ask Always" );
attachmentPanel.add(attachmentLabel);
attachmentPanel.add(attach);
JCheckBox autoConn = new JCheckBox("Auto Connect" );
JCheckBox compress = new JCheckBox("Use Compression" );
autoConn.setSelected(true );
connectPanel.add(protoPanel);
connectPanel.add(attachmentPanel);
connectPanel.add(autoConn);
connectPanel.add(compress);
return connectPanel;
}
protected void centerDialog() {
Dimension screenSize = this .getToolkit().getScreenSize();
Dimension size = this .getSize();
screenSize.height = screenSize.height / 2 ;
screenSize.width = screenSize.width / 2 ;
size.height = size.height / 2 ;
size.width = size.width / 2 ;
int y = screenSize.height - size.height;
int x = screenSize.width - size.width;
this .setLocation(x, y);
}
public void CancelPressed() {
this .setVisible(false );
}
public void OKPressed() {
this .setVisible(false );
}
}
class ColumnLayout implements LayoutManager {
int xInset = 5 ;
int yInset = 5 ;
int yGap = 2 ;
public void addLayoutComponent(String s, Component c) {
}
public void layoutContainer(Container c) {
Insets insets = c.getInsets();
int height = yInset + insets.top;
Component[] children = c.getComponents();
Dimension compSize = null ;
for (Component child : children) {
compSize = child.getPreferredSize();
child.setSize(compSize.width, compSize.height);
child.setLocation(xInset + insets.left, height);
height += compSize.height + yGap;
}
}
public Dimension minimumLayoutSize(Container c) {
Insets insets = c.getInsets();
int height = yInset + insets.top;
int width = 0 + insets.left + insets.right;
Component[] children = c.getComponents();
Dimension compSize = null ;
for (Component child : children) {
compSize = child.getPreferredSize();
height += compSize.height + yGap;
width = Math.max(width, compSize.width + insets.left + insets.right + xInset
* 2 );
}
height += insets.bottom;
return new Dimension(width, height);
}
public Dimension preferredLayoutSize(Container c) {
return minimumLayoutSize(c);
}
public void removeLayoutComponent(Component c) {
}
}
Messung V0.5 in Prozent C=99 H=97 G=97
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-09-03)
¤
*© Formatika GbR, Deutschland