/** *######################################################################### * * A component of the Gatherer application, part of the Greenstone digital * library suite from the New Zealand Digital Library Project at the * University of Waikato, New Zealand. * *

* * Author: John Thompson, Greenstone Digital Library, University of Waikato * *

* * Copyright (C) 1999 New Zealand Digital Library Project * *

* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * *

* * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * *

* * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *######################################################################## */ package org.greenstone.gatherer.gui; import java.awt.*; import java.awt.event.*; import javax.swing.*; import org.greenstone.gatherer.Dictionary; import org.greenstone.gatherer.Gatherer; import org.greenstone.gatherer.cdm.CollectionDesignManager; import org.greenstone.gatherer.cdm.FormatManager; import org.greenstone.gatherer.cdm.Format; import org.greenstone.gatherer.cdm.Format4gs3Manager; import org.greenstone.gatherer.cdm.Format4gs3; import org.greenstone.gatherer.cdm.DOMProxyListEntry; import org.greenstone.gatherer.cdm.Control; import org.greenstone.gatherer.Configuration; import org.greenstone.gatherer.shell.GShell; import org.greenstone.gatherer.shell.GShellEvent; import org.greenstone.gatherer.shell.GShellListener; public class FormatPane extends BaseConfigPane implements PreviewButtonOwner,GShellListener{ /** The button for viewing the collection. */ private static PreviewButton preview_button = null; private boolean buildCanceled = false; /** The constructor. */ public FormatPane () { super (); if (Gatherer.GS3) { contents = new String []{ "CDM.GUI.General", "CDM.GUI.SearchMetadata", "CDM.GUI.Formats", "CDM.GUI.Translation" }; } else { contents = new String []{ "CDM.GUI.General", "CDM.GUI.SearchMetadata", "CDM.GUI.Formats", "CDM.GUI.Translation", "CDM.GUI.SuperCollection","CDM.GUI.Macros", "CDM.GUI.DepositorMetadata" }; } JPanel side_panel = new JPanel (); side_panel.setComponentOrientation(Dictionary.getOrientation()); side_panel.setLayout (new BorderLayout ()); remove (tree_pane); side_panel.add (tree_pane, BorderLayout.CENTER); JPanel preview_pane = new JPanel (); preview_pane.setComponentOrientation(Dictionary.getOrientation()); preview_pane.setLayout (new BorderLayout ()); preview_pane.setBorder (BorderFactory.createEmptyBorder (5,0,0,0)); preview_button = new PreviewButton (Dictionary.get ("CreatePane.Preview_Collection"), Dictionary.get ("CreatePane.Preview_Collection_Tooltip")); preview_button.setEnabled (true); preview_button.setVariablePreview (true); preview_button.setOwner (this); preview_pane.add (preview_button, BorderLayout.CENTER); preview_button.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent event) { if (view != null) { view.loseFocus (); } if (buildCanceled){ WarningDialog dialog = new WarningDialog ("warning.ShowPreviousCollection", Dictionary.get ("ShowPreviousCollection.Title"), Dictionary.get ("ShowPreviousCollection.Message"), null, false); dialog.display (); dialog.dispose (); } } }); side_panel.add (preview_pane, BorderLayout.SOUTH); add (side_panel, BorderLayout.LINE_START); } public void gainFocus (){ if (Gatherer.c_man.built () && Configuration.library_url != null) { preview_button.setEnabled (true); } else{ preview_button.setEnabled (false); } } public static void setPreviewButton (boolean ready_to_preview) { preview_button.setEnabled (ready_to_preview); } /** All implementation of GShellListener must include this method so the listener can be informed of messages from the GShell. * @param event A GShellEvent that contains, amoung other things, the message. */ public synchronized void message (GShellEvent event) { // We don't care. } /** All implementation of GShellListener must include this method so the listener can be informed when a GShell begins its task. Implementation side-effect, not actually used. * @param event A GShellEvent that contains details of the initial state of the GShell before task comencement. */ public synchronized void processBegun (GShellEvent event) { buildCanceled = false; } /** All implementation of GShellListener must include this method so the listener can be informed when a GShell completes its task. * @param event A GShellEvent that contains details of the final state of the GShell after task completion. */ public synchronized void processComplete (GShellEvent event) { if(event.getStatus () == GShell.OK) { if(event.getType () == GShell.BUILD) { buildCanceled = false; } } else { buildCanceled = true; } } protected Control getSubControls (String type) { if(type.equals ("CDM.GUI.General")) { return CollectionDesignManager.general_manager.getControls (); } if (type.equals ("CDM.GUI.SearchMetadata")) { return CollectionDesignManager.searchmetadata_manager.getControls (); } if(type.equals ("CDM.GUI.Formats")) { return CollectionDesignManager.format_manager.getControls (); } if (type.equals ("CDM.GUI.Translation")) { return CollectionDesignManager.translation_manager.getControls (); } if (type.equals ("CDM.GUI.Macros")) { return CollectionDesignManager.macros_manager.getControls (); } if(type.equals ("CDM.GUI.SuperCollection")) { return CollectionDesignManager.supercollection_manager.getControls (); } if(type.equals ("CDM.GUI.DepositorMetadata")) { return CollectionDesignManager.depositormetadata_manager.getControls (); } return null; } private int page_type = PreviewButton.HOME_PAGE; private String page_params = ""; public int getPageType () { System.err.println ("view type = "+view_type); if (view_type.equals ("CDM.GUI.General") || view_type.equals ("CDM.GUI.Translation")) { page_type = PreviewButton.HOME_PAGE; } else { if (Gatherer.GS3 == true) { Format4gs3 current_format = ((Format4gs3Manager.FormatControl)view).getCurrentFormat (); String feature_name = current_format.getFeatureName (); if (feature_name.equals ("browse")) { page_type = PreviewButton.CLASSIFIER_PAGE; page_params = "CL1"; } else if (feature_name.startsWith ("CL")) { page_type = PreviewButton.CLASSIFIER_PAGE; page_params = current_format.getFeatureName (); } else if (feature_name.startsWith ("display")) { page_type = PreviewButton.DOCUMENT_PAGE; page_params = "HASH01e4da6100fdbb11b7ef244b"; } else if (feature_name.equals ("search")) { page_type = PreviewButton.SEARCH_PAGE; page_params = "the"; } else { // HOME_PAGE } } else { Format current_format = ((FormatManager.FormatControl)view).getCurrentFormat (); String feature_name = current_format.getFeatureName (); System.err.println ("current format = "+feature_name); if (feature_name.equals ("")) { // must be modifying VList or HList // what should we do??? page_type = PreviewButton.CLASSIFIER_PAGE; page_params = "CL1"; } if (feature_name.startsWith ("CL")) { page_type = PreviewButton.CLASSIFIER_PAGE; page_params = current_format.getFeatureName (); } else if (feature_name.startsWith ("Document")) { page_type = PreviewButton.DOCUMENT_PAGE; page_params = "HASH01e4da6100fdbb11b7ef244b"; } else if (feature_name.equals ("Search")) { page_type = PreviewButton.SEARCH_PAGE; page_params = "the"; } } } return page_type; } public String getPageParams () { return page_params; } }