| /* | |
| * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved. | |
| * | |
| * This program and the accompanying materials are made available under the | |
| * terms of the Eclipse Distribution License v. 1.0, which is available at | |
| * http://www.eclipse.org/org/documents/edl-v10.php. | |
| * | |
| * SPDX-License-Identifier: BSD-3-Clause | |
| */ | |
| import java.awt.*; | |
| import javax.mail.*; | |
| import javax.swing.*; | |
| import javax.swing.event.*; | |
| import javax.swing.table.*; | |
| /** | |
| * @author Christopher Cotton | |
| * @author Bill Shannon | |
| */ | |
| public class FolderViewer extends JPanel { | |
| FolderModel model = new FolderModel(); | |
| JScrollPane scrollpane; | |
| JTable table; | |
| public FolderViewer() { | |
| this(null); | |
| } | |
| public FolderViewer(Folder what) { | |
| super(new GridLayout(1,1)); | |
| table = new JTable(model); | |
| table.setShowGrid(false); | |
| scrollpane = new JScrollPane(table); | |
| // setup the folder we were given | |
| setFolder(what); | |
| // find out what is pressed | |
| table.getSelectionModel().addListSelectionListener( | |
| new FolderPressed()); | |
| scrollpane.setPreferredSize(new Dimension(700, 300)); | |
| add(scrollpane); | |
| } | |
| /** | |
| * Change the current Folder for the Viewer | |
| * | |
| * @param what the folder to be viewed | |
| */ | |
| public void setFolder(Folder what) { | |
| try { | |
| table.getSelectionModel().clearSelection(); | |
| if (SimpleClient.mv != null) | |
| SimpleClient.mv.setMessage(null); | |
| model.setFolder(what); | |
| scrollpane.invalidate(); | |
| scrollpane.validate(); | |
| } catch (MessagingException me) { | |
| me.printStackTrace(); | |
| } | |
| } | |
| class FolderPressed implements ListSelectionListener { | |
| public void valueChanged(ListSelectionEvent e) { | |
| if (model != null && !e.getValueIsAdjusting()) { | |
| ListSelectionModel lm = (ListSelectionModel) e.getSource(); | |
| int which = lm.getMaxSelectionIndex(); | |
| if (which != -1) { | |
| // get the message and display it | |
| Message msg = model.getMessage(which); | |
| SimpleClient.mv.setMessage(msg); | |
| } | |
| } | |
| } | |
| } | |
| } |