//This file is part of SECONDO.
//Copyright (C) 2004, University in Hagen, Department of Computer Science,
//Database Systems for New Applications.
//SECONDO 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.
//SECONDO 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 SECONDO; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package viewer;
import gui.SecondoObject;
import gui.ViewerControl;
import javax.swing.JComponent;
public abstract class SecondoViewer extends JComponent{
/** Get the name of this viewer.
* The name is used in the menu of MainWindow.
* @return the name of this viewer, used by MainWindow's title bar and menu.
*/
public abstract String getName();
/** Adds a SecondoObject to the viewer.
* @param o the object to be added.
* @return true if this viewer can display o otherwise false.
*/
public abstract boolean addObject(SecondoObject o);
/** Removes o from viewer if displayed.
* @param o the object to be removed.
**/
public abstract void removeObject(SecondoObject o);
/** Remove all objects from viewer.*/
public abstract void removeAll();
/** Check if this viewer can display o.
*
*/
public abstract boolean canDisplay(SecondoObject o);
/** check if o displayed in the moment **/
public abstract boolean isDisplayed(SecondoObject o);
/** hightlighting of o **/
public abstract boolean selectObject(SecondoObject O);
/** Get the MenuExtension for MainWindow.
* This method should be overwritten if there is need for an own menu.
* @return The menu vector; we return null as we don't have one here.
*/
public MenuVector getMenuVector(){
return null;
}
/** set the Control for this viewer **/
public void setViewerControl(ViewerControl VC){
this.VC = VC;
}
/** sets the using in testmode
* In the testmode the viewer should not open any Frames and so on
* without any user interaction with the viewer itsself. Therefore,
* a testfile which is processed in testmode runs up to the end without
* the requirement of user interaction.
**/
public void enableTestmode(boolean on){
// does nothing by default
}
protected ViewerControl VC=null; // inform this Control if select/remove a Object
public static boolean DEBUG_MODE=false;
// set the debug mode of this viewer
public void setDebugMode(boolean on){
DEBUG_MODE=on;
}
/** check if O is a SecondoViewer
* if not false is returned
* otherwise the names from this and O are
* checked for equality */
public boolean equals(Object O){
if (!(O instanceof SecondoViewer))
return false;
else
return getName().equals( ((SecondoViewer)O).getName());
}
/** returns the quality of view for a given object in range [0..1]
* by this method it is possible to choose the best viewer for a given object
* a viewer should overwrite this method
* returns 0 if this viewer can't display SO and 1 if this viewer is
* excellent appropriate to display this SecondoObject
*/
public double getDisplayQuality(SecondoObject SO){
if(canDisplay(SO))
return 0.5;
else
return 0;
}
}