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 + -
显示快捷键?