swoopframe.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 1,892 行 · 第 1/5 页

JAVA
1,892
字号
//The MIT License//// Copyright (c) 2004 Mindswap Research Group, University of Maryland, College Park//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// The above copyright notice and this permission notice shall be included in// all copies or substantial portions of the Software.//// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS// IN THE SOFTWARE.package org.mindswap.swoop;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.StringReader;import java.io.StringWriter;import java.io.Writer;import java.net.URI;import java.net.URISyntaxException;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.Calendar;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.SortedSet;import java.util.TreeSet;import java.util.Vector;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JCheckBoxMenuItem;import javax.swing.JComboBox;import javax.swing.JDialog;import javax.swing.JEditorPane;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JSplitPane;import javax.swing.JTabbedPane;import javax.swing.JToolBar;import javax.swing.KeyStroke;import javax.swing.UIManager;import javax.swing.WindowConstants;import javax.swing.filechooser.FileFilter;import javax.swing.text.BadLocationException;import javax.swing.text.DefaultHighlighter;import javax.swing.text.DefaultHighlighter.DefaultHighlightPainter;import org.mindswap.swoop.annotea.AnnoteaRenderer;import org.mindswap.swoop.change.ChangeLog;import org.mindswap.swoop.change.OntologyChangeRenderer;import org.mindswap.swoop.change.SwoopChange;import org.mindswap.swoop.change.VersionControl;import org.mindswap.swoop.debugging.RepairFrame;import org.mindswap.swoop.explore.AxiomExtractor;import org.mindswap.swoop.explore.AxiomIndexer;import org.mindswap.swoop.explore.AxiomList;import org.mindswap.swoop.fun.Sudoku;import org.mindswap.swoop.popup.PopupOntologySource;import org.mindswap.swoop.reasoner.PelletReasoner;import org.mindswap.swoop.refactoring.AutoEconnPartitioning;import org.mindswap.swoop.refactoring.Segmentation;import org.mindswap.swoop.renderer.entity.ConciseFormatEntityRenderer;import org.mindswap.swoop.renderer.ontology.SwoopOntologyInfo;import org.mindswap.swoop.utils.Bookmark;import org.mindswap.swoop.utils.QueryInterface;import org.mindswap.swoop.utils.SwoopCache;import org.mindswap.swoop.utils.SwoopPreferences;import org.mindswap.swoop.utils.VersionInfo;import org.mindswap.swoop.utils.graph.hierarchy.ClassHierarchyGraph;import org.mindswap.swoop.utils.graph.hierarchy.ui.MotherShipFrame;import org.mindswap.swoop.utils.owlapi.AxiomCollector;import org.mindswap.swoop.utils.owlapi.CorrectedRDFRenderer;import org.mindswap.swoop.utils.owlapi.ImportChange;import org.mindswap.swoop.utils.owlapi.OWLOntBuilder;import org.mindswap.swoop.utils.owlapi.OWLOntSplitter;import org.mindswap.swoop.utils.treeexport.STFileFilter;import org.mindswap.swoop.utils.treeexport.TM3FileFilter;import org.mindswap.swoop.utils.treeexport.VisualizationFileFilter;import org.mindswap.swoop.utils.ui.BookmarkComparator;import org.mindswap.swoop.utils.ui.BrowserControl;import org.mindswap.swoop.utils.ui.ExceptionDialog;import org.mindswap.swoop.utils.ui.LaunchBar;import org.mindswap.swoop.utils.ui.SwingWorker;import org.mindswap.swoop.utils.ui.SwoopFileFilter;import org.mindswap.swoop.utils.ui.SwoopHTMLFileFilter;import org.mindswap.swoop.utils.ui.SwoopProgressDialog;import org.mindswap.swoop.utils.ui.TextFileFilter;import org.semanticweb.owl.model.OWLClass;import org.semanticweb.owl.model.OWLClassAxiom;import org.semanticweb.owl.model.OWLDataFactory;import org.semanticweb.owl.model.OWLDataProperty;import org.semanticweb.owl.model.OWLDescription;import org.semanticweb.owl.model.OWLDifferentIndividualsAxiom;import org.semanticweb.owl.model.OWLDisjointClassesAxiom;import org.semanticweb.owl.model.OWLEntity;import org.semanticweb.owl.model.OWLEquivalentClassesAxiom;import org.semanticweb.owl.model.OWLException;import org.semanticweb.owl.model.OWLIndividual;import org.semanticweb.owl.model.OWLNot;import org.semanticweb.owl.model.OWLObject;import org.semanticweb.owl.model.OWLObjectProperty;import org.semanticweb.owl.model.OWLOntology;import org.semanticweb.owl.model.OWLSameIndividualsAxiom;import org.semanticweb.owl.model.OWLSubClassAxiom;import org.semanticweb.owl.model.change.AddClassAxiom;import org.semanticweb.owl.model.change.AddImport;import org.semanticweb.owl.model.change.AddIndividualAxiom;import org.semanticweb.owl.model.change.AddIndividualClass;import org.semanticweb.owl.model.change.ChangeVisitor;import org.semanticweb.owl.model.change.OntologyChange;import org.semanticweb.owl.model.change.RemoveClassAxiom;import org.semanticweb.owl.model.helper.OntologyHelper;public class SwoopFrame extends JFrame implements ActionListener, WindowListener, SwoopModelListener {	private JMenu bookmarkMenu;	private JMenuItem JMenuFileNew, newOntMItem, loadOntMItem, loadWkspMItem,			saveWkspMItem, saveAsMItem, ontSaveMItem, ontCodeMenu,			ontCodeASMenu, exportStatsMItem, exportTreeMItem, exportHTMLMItem, exportInferredKB;	private JMenuItem clearMItem, exportMItem, prefMItem, addResHoldMItem, 			viewResHoldMItem, queryMItem, repairMItem, versionMItem, sudokuMItem;	private JMenuItem addBookmarkMenu, remBookmarkMenu, sortBookmarkMenu, sampleOnt0Menu, sampleOnt1Menu, sampleOnt2Menu,			sampleOnt3Menu, sampleOnt4Menu, sampleOnt5Menu;	private JMenuItem JMenuAutomatic, browserMenu, reloadOntMenu, refreshOntMenu, extractModMenu, extractModDualMenu;//	public  JMenu sosMenu;	private JMenuItem tableauSOSMenu, findAllMUPSMenu, splitOntMItem;		private JMenu JMenuAdvanced; // location divider between ontology and term display	//*****************************************************	private JCheckBoxMenuItem viewSideBarMenu, viewChangeBarMenu, viewOptionBarMenu, showEnableRules;	private JCheckBox showChangeBarChk, showDivisionsChk;	private JButton addrBtn;	private JSplitPane rendererPanel, sidePanel, centerPanel, rendererAdvancedPane;	private JPanel optionPanel, ontPanel;		private Font tahoma = new Font("Tahoma", Font.PLAIN, 11);	private List bookmarks;	private File openFile = null, saveFile = null;	private int sideBarPos = 260;	private int advancedPanePos = 440;	private int dividerLocation = 250;	/*	 * Important public fields	 */	public SwoopModel swoopModel; // main model object shared by all swoop components	public OntologyDisplay ontDisplay; // handler for ontology display	public TermsDisplay termDisplay; // handler for terms display	public ChangeLog changeLog; // pane that records all ontology changes	public LaunchBar launchBar; // can be used to launch a Swoogle/Google search	public AnnoteaRenderer annotRenderer; // pane that displays Annotea annotations	public VersionControl versionControl; // pane that displayed version controlled ontologies	public File ontFile = null, wkspcFile = null;	public PopupOntologySource srcWindow = null;	public JTabbedPane advancedTabPane;	public JCheckBoxMenuItem launchBarMenu;;	public JMenuItem ontRemoveMItem;	public JComboBox addrCombo;	public String addrComboString;	private HashMap fileOntMap; // map: ontology URI --> local file location		public SwoopFrame(SwoopModel swoopModel) {		this.swoopModel = swoopModel;		this.changeLog = new ChangeLog(this, swoopModel);		this.launchBar = new LaunchBar(this);		this.fileOntMap = new HashMap();		swoopModel.setFrame(this);				swoopModel.loadPreferences();		setupUI();		defaultUI();		addSwoopModelListeners();		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);		this.addWindowListener(this);		// finally do this		// check option in SwoopModel for opening last Workspace (also saved as default.swp)		this.loadBookmarkFile();		if (!Swoop.isWebStart()) {			// normal app loaded						if (swoopModel.isOpenLastWorkspace()) {				wkspcFile = swoopModel.getWkspcFile();				this.loadWorkspace(false);				// enable menu options such as Save, Export etc				this.enableMenuOptions();				if (wkspcFile != null)					saveWkspMItem.setText("Save Workspace (../"							+ wkspcFile.getName() + ")");			}		} 	}	public void setupUI() {		// setup look & feel of UI		setupLookFeel();		// draw all panels		JPanel mainPanel = new JPanel();		mainPanel.setLayout(new BorderLayout());		// create ontology display panel		ontDisplay = new OntologyDisplay(swoopModel, this);		// create terms display panel		termDisplay = new TermsDisplay(this, swoopModel);		// add row panel for Address URL bar		JPanel rowPanelAddr = new JPanel();		JLabel addrLbl = new JLabel("Address: ");		addrLbl.setFont(tahoma);		addrCombo = new JComboBox();		addrCombo.setFont(new Font(swoopModel.getFontFace(), Font.PLAIN, 11));		//addrCombo.addItemListener(this); // don't add this - creates weird listener problems		addrCombo.addActionListener(this);		addrCombo.setEditable(true);		addrCombo.setSelectedItem("");		addrBtn = new JButton("Browse Local");		addrBtn.setFont(tahoma);		addrBtn.addActionListener(this);		rowPanelAddr.setLayout(new BorderLayout());		rowPanelAddr.add(addrLbl, "West");		rowPanelAddr.add(addrCombo, "Center");		JSplitPane topPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);		JPanel histBtnPane = new JPanel();		histBtnPane.setLayout(new GridLayout(1, 6));		histBtnPane.add(termDisplay.prevBtn);		histBtnPane.add(termDisplay.nextBtn);		topPanel.setLeftComponent(histBtnPane);		topPanel.setRightComponent(rowPanelAddr);		topPanel.setDividerLocation(200);		topPanel.setEnabled(false);		// create side panel containing ontList and entityTree/List		sidePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT);		ontPanel = new JPanel();		ontPanel.setLayout(new BorderLayout());		ontPanel.add(ontDisplay.ontToolBar, "North");		ontPanel.add(ontDisplay.ontListPane, "Center");		sidePanel.setTopComponent(ontPanel);		sidePanel.setBottomComponent(termDisplay.termListPanel);		// create renderer panel containing renderers for ontology and entities		rendererPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT);		rendererPanel.setTopComponent(ontDisplay.ontDescTab);		rendererPanel.setBottomComponent(termDisplay.termDisplayEditPane);		// add show advanced check box		showChangeBarChk = new JCheckBox("Changes/Annotations");		showChangeBarChk.addActionListener(this);		showChangeBarChk.setFont(tahoma);		showChangeBarChk				.setToolTipText("Show Change Tracking and Annotea Annotations");		// add advanced panel		advancedTabPane = new JTabbedPane();		advancedTabPane.setFont(tahoma);		advancedTabPane.addTab("Change Tracking", changeLog);		advancedTabPane.setVisible(false);		// add annotea renderer to tab		annotRenderer = new AnnoteaRenderer(swoopModel, this);		advancedTabPane.addTab("Annotea Annotations", annotRenderer);		// add renderer and advanced to a joint split pane		rendererAdvancedPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);		rendererAdvancedPane.setLeftComponent(rendererPanel);		rendererAdvancedPane.setRightComponent(advancedTabPane);		// create option tool bar		optionPanel = new JPanel();		optionPanel.setLayout(new BorderLayout());		JToolBar optionBar = new JToolBar();		optionBar.add(termDisplay.showInheritedChk);		optionBar.add(showChangeBarChk);		optionBar.add(termDisplay.termEditableChk);		optionPanel.add(optionBar, "East");		// create browserpanel containing rendererPanel and optionPanel		JPanel browserPanel = new JPanel();		browserPanel.setLayout(new BorderLayout());		browserPanel.add(optionPanel, "North");		browserPanel.add(rendererAdvancedPane, "Center");		browserPanel.add(termDisplay.termEditButtonPane, "South");		// add side panel and browser panel to center		centerPanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);		centerPanel.setLeftComponent(sidePanel);		centerPanel.setRightComponent(browserPanel);		//                centerPanel.setOneTouchExpandable(true);		// add panels to mainPanel		mainPanel.add(topPanel, "North");		mainPanel.add(centerPanel, "Center");		// add mainPanel to contentPane		getContentPane().setLayout(new GridLayout(1, 1));		getContentPane().add(mainPanel);		setupMenuBar();		// add advanced menu option: version control		versionControl = new VersionControl(swoopModel, this);		versionControl.hide();		// initialize JFrame		//setTitle("SWOOP v2.3 beta 3.1 (Jan 2006)"); // + Swoop.getVersionInfo().getVersionString());		setTitle("SWOOP "+Swoop.getVersionInfo().getVersionString());		setSize(1024, 740);		// need to set divider location in splitpane after it is drawn and repainted on screen		rendererPanel.setDividerLocation(dividerLocation);	}	public void addSwoopModelListeners() {		swoopModel.addListener(this);		swoopModel.addListener(ontDisplay);		swoopModel.addListener(termDisplay);		swoopModel.addListener(changeLog);		swoopModel.addListener(annotRenderer);	}	/**	 * Default UI settings on startup	 *	 */	public void defaultUI() {		sidePanel.setVisible(true); // display sidebar		centerPanel.setDividerLocation(sideBarPos);		termDisplay.termDisplayEditPane.setVisible(false); // display advanced entity pane ?

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?