source: other-projects/FileTransfer-WebSocketPair/testGXTWithGreenstone/src/org/greenstone/gatherer/file/FileOpenActionListener.java@ 33053

Last change on this file since 33053 was 33053, checked in by ak19, 5 years ago

I still had some stuff of Nathan Kelly's (FileTransfer-WebSocketPair) sitting on my USB. Had already commited the Themes folder at the time, 2 years back. Not sure if he wanted this additional folder commited. But I didn't want to delete it and decided it will be better off on SVN. When we use his project, if we find we didn't need this test folder, we can remove it from svn then.

File size: 4.2 KB
Line 
1/**
2 *#########################################################################
3 *
4 * A component of the Gatherer application, part of the Greenstone digital
5 * library suite from the New Zealand Digital Library Project at the
6 * University of Waikato, New Zealand.
7 *
8 * <BR><BR>
9 *
10 * Author: John Thompson, Greenstone Digital Library, University of Waikato
11 *
12 * <BR><BR>
13 *
14 * Copyright (C) 1999 New Zealand Digital Library Project
15 *
16 * <BR><BR>
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
22 *
23 * <BR><BR>
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
29 *
30 * <BR><BR>
31 *
32 * You should have received a copy of the GNU General Public License
33 * along with this program; if not, write to the Free Software
34 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
35 *########################################################################
36 */
37package org.greenstone.gatherer.file;
38
39import java.awt.event.*;
40import java.io.*;
41import javax.swing.*;
42import javax.swing.event.*;
43import javax.swing.tree.*;
44import org.greenstone.gatherer.Gatherer;
45
46/** This class listens for mouse clicks and responds to double-clicks (spawn a new application to view the selected file) and right mouse button clicks (popup menu).
47 * @author John Thompson, Greenstone Digital Library, University of Waikato
48 * @version 2.3b
49 */
50public class FileOpenActionListener
51 extends MouseAdapter
52 implements TreeExpansionListener {
53 /** This flag gets toggled to <i>true</i> if the listener determines that the next mouse clicked event it will recieve is actually caused by the tree expanding or collapsing. */
54 private boolean ignore = false;
55 /** The constructor. */
56 public FileOpenActionListener() {
57 }
58 /** Any subclass of MouseAdapter can override this method to respond to mouse click events. In this case we want to start an external application if someone double clicks on an appropriate file record.
59 * @param event A <strong>MouseEvent</strong> containing further information about the mouse click performed.
60 * @see org.greenstone.gatherer.Gatherer
61 * @see org.greenstone.gatherer.file.FileNode
62 * @see org.greenstone.gatherer.gui.tree.DragTree
63 */
64 public void mouseClicked(MouseEvent event) {
65 ///ystem.err.println("Mouse clicked");
66 if(!ignore) {
67 if(event.getClickCount() >= 2) {
68 // Find the file we're clicking on.
69 JTree tree = (JTree)event.getSource();
70 TreePath path = tree.getClosestPathForLocation(event.getX(), event.getY());
71 if(path != null) {
72 FileNode record = (FileNode)path.getLastPathComponent();
73 ///ystem.err.println("Double clicked on " + record);
74 File file = record.getFile();
75 if (file != null && file.isFile()) {
76 ///ystem.err.println("Running " + file);
77 Gatherer.f_man.openFileInExternalApplication(file);
78 }
79 }
80 }
81 }
82 else {
83 ///ystem.err.println("Caused by tree expansion / collapse. Ignoring.");
84 ignore = false;
85 }
86 }
87 /** Any implementation of TreeExpansionListener must include this method so that we can be informed when a tree node has been collapsed, thus indicating that any mouse click events about to be recieved are most likely related to this event.
88 * @param event A <strong>TreeExpansionEvent</strong> containing information about the node collapsed.
89 */
90 public void treeCollapsed(TreeExpansionEvent event) {
91 ///ystem.err.println("Tree Collapsed");
92 ignore = true;
93 }
94 /** Any implementation of TreeExpansionListener must include this method so that we can be informed when a tree node has been expanded, thus indicating that any mouse click events about to be recieved are most likely related to this event.
95 * @param event A <strong>TreeExpansionEvent</strong> containing information about the node expanded.
96 */
97 public void treeExpanded(TreeExpansionEvent event) {
98 ///ystem.err.println("Tree Expanded");
99 ignore = true;
100 }
101}
Note: See TracBrowser for help on using the repository browser.