| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.oodt.cas.filemgr.browser.controller; |
| |
| import java.awt.event.ActionEvent; |
| import java.awt.event.ActionListener; |
| |
| import javax.swing.JButton; |
| import javax.swing.JOptionPane; |
| |
| import org.apache.oodt.cas.filemgr.browser.model.CasDB; |
| import org.apache.oodt.cas.filemgr.browser.view.MainWindow; |
| import org.apache.oodt.cas.filemgr.browser.view.prompts.ConnectPrompt; |
| import org.apache.oodt.cas.filemgr.browser.view.prompts.QueryBuilderPrompt; |
| import org.apache.oodt.cas.filemgr.browser.view.prompts.SortPrompt; |
| |
| public class WindowListener implements ActionListener { |
| |
| private MainWindow window; |
| private ConnectPrompt prompt; |
| private SortPrompt sort; |
| private QueryBuilderPrompt query; |
| |
| private CasDB db; |
| |
| public WindowListener(MainWindow m) { |
| window = m; |
| db = new CasDB(); |
| } |
| |
| public void actionPerformed(ActionEvent arg0) { |
| if (arg0.getActionCommand().equals("About")) { |
| String aboutInfo = "OODT Catalog and Archive Server File Manger Browser.\n" |
| + "Copyright (c) 2010, Apache Software Foundation."; |
| JOptionPane.showMessageDialog(window, aboutInfo); |
| } else if (arg0.getActionCommand().equals("Query Language")) { |
| String aboutQueryLanguage = "The CAS File Manager Browser uses the Lucene Query Language.\n" |
| + "More Information can be found at:\n" |
| + "http://lucene.apache.org/java/docs/queryparsersyntax.html"; |
| JOptionPane.showMessageDialog(window, aboutQueryLanguage); |
| } else if (arg0.getActionCommand().equals("Exit")) { |
| String exitWarning = "Are you sure you want to exit the CAS File Manager Browser?\n" |
| + "All unexported queries will be lost."; |
| int returnVal = JOptionPane.showConfirmDialog(window, exitWarning, |
| "Exit", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); |
| if (returnVal == JOptionPane.OK_OPTION) { |
| System.exit(0); |
| } |
| } else if (arg0.getActionCommand().equals("Connect...")) { |
| // this is from the main menu |
| window.bar.changeConnectStatus(); |
| prompt = new ConnectPrompt(this); |
| prompt.pack(); |
| prompt.setVisible(true); |
| } else if (arg0.getActionCommand().equals("Disconnect")) { |
| String disconnectWarning = "Are you sure you want to disconnect from this File Manager?\n" |
| + "All unexported queries will be lost."; |
| int returnVal = JOptionPane.showConfirmDialog(window, disconnectWarning, |
| "Disconnect", JOptionPane.OK_CANCEL_OPTION, |
| JOptionPane.WARNING_MESSAGE); |
| if (returnVal == JOptionPane.OK_OPTION) { |
| window.bar.changeConnectStatus(); |
| db.disconnect(); |
| window.mPane.tPane.setBlank(); |
| window.qPane.updateTypes(new String[] { "" }); |
| window.bPane.changeStatus("Disconnected"); |
| } |
| } else if (arg0.getActionCommand().equals("Cancel")) { |
| if (((JButton) arg0.getSource()).getName().equals("ConnectCancel")) { |
| prompt.dispose(); |
| window.bar.changeConnectStatus(); |
| } else if (((JButton) arg0.getSource()).getName().equals("SortCancel")) { |
| sort.dispose(); |
| } |
| } else if (arg0.getActionCommand().equals("Connect")) { |
| // this is from the connect prompt |
| boolean connected = db.connect(prompt.getCASUrl()); |
| if (connected) { |
| window.qPane.updateTypes(db.getAvailableTypes()); |
| window.bPane.changeStatus("Connected to " + prompt.getCASUrl()); |
| } else { |
| window.bar.changeConnectStatus(); |
| String errorConnectingString = "Error Connecting to CAS File Manager at this following address:" |
| + prompt.getCASUrl(); |
| JOptionPane.showMessageDialog(window, errorConnectingString, "Error", |
| JOptionPane.ERROR_MESSAGE); |
| } |
| prompt.dispose(); |
| } else if (arg0.getActionCommand().equals("Sort")) { |
| sort = new SortPrompt(window, this); |
| sort.pack(); |
| sort.setVisible(true); |
| } else if (arg0.getActionCommand().equals("Query Builder")) { |
| if (db.isConnected()) { |
| query = new QueryBuilderPrompt(db, this); |
| query.pack(); |
| query.setVisible(true); |
| } else { |
| String errorQueryString = "You must connect to a CAS File Manager before using the Query Builder."; |
| JOptionPane.showMessageDialog(window, errorQueryString, "Disconnected", |
| JOptionPane.WARNING_MESSAGE); |
| } |
| } else if (arg0.getActionCommand().equals("OK")) { |
| window.mPane.tPane.sortRows(sort.getSortIndex(), sort.getSortType()); |
| sort.dispose(); |
| } else if (arg0.getActionCommand().equals("Search")) { |
| if (((JButton) arg0.getSource()).getName().equals("AdvancedQuery")) { |
| if (db.isConnected()) { |
| window.bPane.changeStatus("Querying the CAS..."); |
| boolean result = db.issueQuery(query.getQuery(), query |
| .getProductType()); |
| if (result) { |
| window.mPane.tPane.newTable(db.results.getData()); |
| window.bPane.changeStatus("Query: " + query.getQueryString() |
| + " returned " + db.results.getNumRecords() + " records."); |
| } else { |
| window.mPane.tPane.setBlank(); |
| window.bPane.changeStatus("Query failed."); |
| window.qPane.clearQuery(); |
| } |
| } |
| query.dispose(); |
| } else { |
| if (db.isConnected()) { |
| window.bPane.changeStatus("Querying the CAS..."); |
| String query = window.qPane.getQuery(); |
| boolean result = db.createQuery(query, window.qPane.getType()); |
| if (result) { |
| window.mPane.tPane.newTable(db.results.getData()); |
| window.bPane.changeStatus("Query: " + query + " returned " |
| + db.results.getNumRecords() + " records."); |
| } else { |
| window.mPane.tPane.setBlank(); |
| window.bPane.changeStatus("Query failed."); |
| window.qPane.clearQuery(); |
| } |
| } |
| } |
| } else if (arg0.getActionCommand().equals("Clear Query")) { |
| String clearWarning = "Are you sure you want to clear the current Query?\n" |
| + "All unexported queries will be lost."; |
| int returnVal = JOptionPane.showConfirmDialog(window, clearWarning, |
| "Clear", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); |
| if (returnVal == JOptionPane.OK_OPTION) { |
| window.mPane.tPane.setBlank(); |
| window.bPane.changeStatus("Query cleared."); |
| } |
| } |
| } |
| |
| } |