/**
*#########################################################################
*
* 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.LocalLibraryServer;
import org.greenstone.gatherer.cdm.CollectionDesignManager;
import org.greenstone.gatherer.cdm.FormatManager;
import org.greenstone.gatherer.cdm.Format;
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 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" };
}
JPanel side_panel = new JPanel();
side_panel.setLayout(new BorderLayout());
remove(tree_pane);
side_panel.add(tree_pane, BorderLayout.CENTER);
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_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (view != null) {
view.loseFocus();
}
if (buildCanceled){
WarningDialog dialog = new WarningDialog("warning.ShowPreviousCollection", "ShowPreviousCollection.Title", Dictionary.get("ShowPreviousCollection.Message"), null, false);
dialog.display();
dialog.dispose();
}
}
});
side_panel.add(preview_button, BorderLayout.SOUTH);
add(side_panel, BorderLayout.WEST);
}
public void gainFocus(){
if (Gatherer.c_man.built() && Configuration.library_url != null) {
preview_button.setEnabled(true);
}
else{
preview_button.setEnabled(false);
}
}
/** 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();
}
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 {
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;
}
}