//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.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import sj.lang.ListExpr; import sj.lang.MessageListener; import java.util.Vector; import sj.lang.IntByReference; import tools.Reporter; public class QueryViewer extends SecondoViewer implements ViewerControl,ViewerChangeListener{ /** creates a new QueryViewer */ public QueryViewer(){ RelSplitter = new RelSplit(); dummy = new JPanel(); SplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,RelSplitter,dummy); SplitPane.setPreferredSize(new Dimension(400,400)); SplitPane.setDividerLocation(150); setLayout(new BorderLayout()); add(SplitPane,BorderLayout.CENTER); // build the MenuExtension MenuExtension = new MenuVector(); SubViewersMenu = new JMenu("SubViewers"); ShowMenu = new JMenu("show"); createShowMenu(); MenuExtension.addMenu(SubViewersMenu); MenuExtension.addMenu(ShowMenu); RelSplitter.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent evt){ if(evt.getClickCount()>1){ SecondoObject SO = QueryViewer.this.RelSplitter.getSelectedObject(); if(SO==null) Reporter.showError("no Object selected"); else{ QueryViewer.this.getCurrentViewer().addObject(SO); } } } }); } //##### SecondoViewer-Methods ###### public String getName(){ return "Query-Viewer"; } public boolean addObject(SecondoObject o){ if (!canDisplay(o)) return false; else{ RelSplitter.addObject(o); return true; } } public boolean displayAt(String viewerName, SecondoObject o){ int index = getViewerIndex(viewerName); if(index<0){ return false; } SecondoViewer sv = (SecondoViewer) SubViewers.get(index); if(!sv.canDisplay(o)){ return false; } selectViewerIndex(index); sv.addObject(o); return true; } int getViewerIndex(String name){ if(name==null){ return -1; } for(int i=0;iSubViewers.size()-1) index=0; if(SubViewers.size()==0) // no viewer present SplitPane.setRightComponent(dummy); else{ SecondoViewer Viewer = (SecondoViewer) SubViewers.get(index); SplitPane.setRightComponent(Viewer); Viewer.setViewerControl(this); computeMenuExtension(); } } /** compute the Menuextension for the gui */ private void computeMenuExtension(){ MenuExtension.clear(); if(VC!=null) VC.updateMenu(); MenuExtension.addMenu(SubViewersMenu); MenuExtension.addMenu(ShowMenu); Object CurrentViewer = SplitPane.getRightComponent(); if(!(CurrentViewer==null || CurrentViewer.equals(dummy))){ SecondoViewer SV = (SecondoViewer) CurrentViewer; MenuVector ME = SV.getMenuVector(); if(ME!=null) for(int i=0;i0){ if (CV.canDisplay(SOs[0])) // all objects have the same type for(int i=0;i