Skip to content

Package: TreePress

TreePress

nameinstructionbranchcomplexitylinemethod
TreePress()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
valueChanged(TreeSelectionEvent)
M: 28 C: 0
0%
M: 6 C: 0
0%
M: 4 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*
2: * Copyright (c) 1997, 2023 Oracle and/or its affiliates. All rights reserved.
3: *
4: * This program and the accompanying materials are made available under the
5: * terms of the Eclipse Distribution License v. 1.0, which is available at
6: * http://www.eclipse.org/org/documents/edl-v10.php.
7: *
8: * SPDX-License-Identifier: BSD-3-Clause
9: */
10:
11: package example.client;
12:
13: import jakarta.activation.CommandMap;
14: import jakarta.activation.MailcapCommandMap;
15: import jakarta.mail.Folder;
16: import jakarta.mail.MessagingException;
17: import jakarta.mail.Session;
18: import jakarta.mail.Store;
19: import jakarta.mail.URLName;
20:
21: import javax.swing.*;
22: import javax.swing.event.TreeSelectionEvent;
23: import javax.swing.event.TreeSelectionListener;
24: import javax.swing.tree.DefaultMutableTreeNode;
25: import javax.swing.tree.DefaultTreeModel;
26: import javax.swing.tree.TreePath;
27: import java.awt.*;
28: import java.awt.event.WindowAdapter;
29: import java.awt.event.WindowEvent;
30: import java.io.File;
31: import java.io.FileInputStream;
32: import java.util.Enumeration;
33: import java.util.Vector;
34:
35: /**
36: * Demo app that shows a very simple Mail Client
37: *
38: * @author Christopher Cotton
39: * @author Bill Shannon
40: */
41:
42: public class SimpleClient {
43:
44: static Vector url = new Vector();
45: static FolderViewer fv;
46: static MessageViewer mv;
47:
48: public static void main(String[] argv) {
49: boolean usage = false;
50:
51: for (int optind = 0; optind < argv.length; optind++) {
52: if (argv[optind].equals("-L")) {
53: url.addElement(argv[++optind]);
54: } else if (argv[optind].startsWith("-")) {
55: usage = true;
56: break;
57: } else {
58: usage = true;
59: break;
60: }
61: }
62:
63: if (usage || url.size() == 0) {
64: System.out.println("Usage: client.SimpleClient -L url");
65: System.out.println(" where url is protocol://username:password@hostname/");
66: System.exit(1);
67: }
68:
69: try {
70: // Set up our Mailcap entries. This will allow the JAF
71: // to locate our viewers.
72: File capfile = new File("simple.mailcap");
73: if (!capfile.isFile()) {
74: System.out.println(
75: "Cannot locate the \"simple.mailcap\" file.");
76: System.exit(1);
77: }
78:
79: CommandMap.setDefaultCommandMap(new MailcapCommandMap(
80: new FileInputStream(capfile)));
81:
82: JFrame frame = new JFrame("Simple Jakarta Mail Client");
83: frame.addWindowListener(new WindowAdapter() {
84: public void windowClosing(WindowEvent e) {
85: System.exit(0);
86: }
87: });
88: //frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
89:
90: // Get a Store object
91: SimpleAuthenticator auth = new SimpleAuthenticator(frame);
92: Session session =
93: Session.getDefaultInstance(System.getProperties(), auth);
94: //session.setDebug(true);
95:
96: DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
97:
98: // create a node for each store we have
99: for (Enumeration e = url.elements(); e.hasMoreElements(); ) {
100: String urlstring = (String) e.nextElement();
101: URLName urln = new URLName(urlstring);
102: Store store = session.getStore(urln);
103:
104: StoreTreeNode storenode = new StoreTreeNode(store);
105: root.add(storenode);
106: }
107:
108: DefaultTreeModel treeModel = new DefaultTreeModel(root);
109: JTree tree = new JTree(treeModel);
110: tree.addTreeSelectionListener(new TreePress());
111:
112: /* Put the Tree in a scroller. */
113: JScrollPane sp = new JScrollPane();
114: sp.setPreferredSize(new Dimension(250, 300));
115: sp.getViewport().add(tree);
116:
117: /* Create a double buffered JPanel */
118: JPanel sv = new JPanel(new BorderLayout());
119: sv.add("Center", sp);
120:
121: fv = new FolderViewer(null);
122:
123: JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
124: sv, fv);
125: jsp.setOneTouchExpandable(true);
126: mv = new MessageViewer();
127: JSplitPane jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
128: jsp, mv);
129: jsp2.setOneTouchExpandable(true);
130:
131: frame.getContentPane().add(jsp2);
132: frame.pack();
133: frame.show();
134:
135: } catch (Exception ex) {
136: System.out.println("SimpletClient caught exception");
137: ex.printStackTrace();
138: System.exit(1);
139: }
140: }
141:
142: }
143:
144: class TreePress implements TreeSelectionListener {
145:
146: public void valueChanged(TreeSelectionEvent e) {
147: TreePath path = e.getNewLeadSelectionPath();
148:• if (path != null) {
149: Object o = path.getLastPathComponent();
150:• if (o instanceof FolderTreeNode) {
151: FolderTreeNode node = (FolderTreeNode) o;
152: Folder folder = node.getFolder();
153:
154: try {
155:• if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) {
156: SimpleClient.fv.setFolder(folder);
157: }
158: } catch (MessagingException me) {
159: }
160: }
161: }
162: }
163: }