⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classexptable.java

📁 Semantic Web Ontology Editor
💻 JAVA
字号:
package org.mindswap.swoop.explore;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Panel;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;

import org.mindswap.swoop.SwoopModel;
import org.mindswap.swoop.utils.graph.hierarchy.popup.ClassAxiomContainer;
import org.mindswap.swoop.utils.graph.hierarchy.popup.ConcisePlainVisitor;
import org.semanticweb.owl.impl.model.OWLClassImpl;
import org.semanticweb.owl.impl.model.OWLObjectImpl;
import org.semanticweb.owl.io.ShortFormProvider;
import org.semanticweb.owl.model.OWLClassAxiom;
import org.semanticweb.owl.model.OWLDescription;
import org.semanticweb.owl.model.OWLObject;

public class ClassExpTable extends JFrame implements WindowListener, ComponentListener, MouseListener
{
	
	class ClassExpRenderer extends JLabel implements TableCellRenderer 
	{
		private ConcisePlainVisitor myVisitor;
		public ClassExpRenderer( ConcisePlainVisitor visitor ) 
		{ 
			this.setOpaque( true );
			myVisitor = visitor; 
		}

		public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
		{
			try
			{
				// managing colors
				if ( isSelected )
				{
					this.setBackground( table.getSelectionBackground() );
					this.setForeground( table.getSelectionForeground() );
				}
				else
				{
					this.setBackground( table.getSelectionForeground() );
					this.setForeground( Color.BLACK );
				}
				
				OWLDescription desc = (OWLDescription)value;
				desc.accept( myVisitor );
				String str = myVisitor.result();
				myVisitor.reset();
				
				this.setText( str  );
				//System.out.println( this.getText() );
			}
			catch ( Exception e )
			{ e.printStackTrace(); }
			
			return this;
		}
	}
	
	class RichHeaderRenderer extends JPanel implements TableCellRenderer 
	{
		private ConcisePlainVisitor myVisitor;
		private JLabel myLabel = null;
		private int myColNum;
		private boolean isInit = false;
		
		public RichHeaderRenderer() 
		{ 
			super();
			setOpaque(true);
		}

		public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
		{				
			if ( !isInit )
				init( table, value, column );
			return this;
		}
		
		private void init( JTable table, Object value, int column )
		{
			isInit = true;
			myLabel = new JLabel( value.toString() );
			this.add( myLabel );
			myColNum = column;
			this.setPreferredSize( new Dimension( 200, 50 ));
			//this.setBackground( Color.LIGHT_GRAY );
		}
		
		public void paint( Graphics g)
		{
			super.paint(g);
			Graphics2D g2d = (Graphics2D)g;
			g2d.setColor( Color.BLACK );
			
			g2d.drawLine( 0, 0, this.getWidth(), 0 );  // top
			g2d.drawLine( 0, this.getHeight()-1, this.getWidth(), this.getHeight()-1 ); // bot			
			g2d.drawLine( this.getWidth()-1, 0, this.getWidth()-1, this.getHeight() ); // right
			if ( myColNum == 0 )
				g2d.drawLine( 0, 0, 0, this.getHeight() ); // left
		}
	}
	
	
	class ClassExpTableModel extends AbstractTableModel
	{
	    private String[] myColNames = null;
	    private Object[][] myData = null;

	    public ClassExpTableModel( String [] colNames, Object[][] data )
	    {
	    	myColNames = colNames;
	    	myData = data;
	    }
	    
	    public int getColumnCount() 
	    { return myColNames.length; }

	    public int getRowCount() 
	    { return myData.length; }

	    public String getColumnName(int col) 
	    { return myColNames[col]; }

	    public Object getValueAt(int row, int col) 
	    { return myData[row][col]; }

	    public Class getColumnClass(int c) 
	    {
	    	//System.err.println("column class: " + c);
	    	return getValueAt(0, c).getClass(); 
	    }

	    public boolean isCellEditable(int row, int col) 
	    { return false; }

	    public void setValueAt(Object value, int row, int col) 
	    { }
	}
	
	private JTable myTable;
	private ClassExpTableModel myDataModel;
	private TableSorter myManipModel;

	private AxiomIndexer myIndexer;
	
	public ClassExpTable( AxiomIndexer indexer, ConcisePlainVisitor visitor, HashedCounts classExpCounts, Hashtable classExpDepths )
	{
		this.myIndexer = indexer;
		String [] colNames = {"Class Expression", "#Occurences", "Depth", "Score"};
		
		Object [][] data = new Object[classExpCounts.keySet().size() ][4];
		
		int i = 0;
		for ( Iterator it = classExpCounts.keySet().iterator(); it.hasNext(); )
		{
			OWLDescription desc = (OWLDescription)it.next();
			if ( desc == null )
				System.out.println("description is null at " + i);
			Integer count = new Integer( classExpCounts.getCount( desc ));
			Integer depth = (Integer)classExpDepths.get( desc );
			try
			{
				if ( depth == null )
				{
					System.out.println(" depth is null at " + i);
					desc.accept( visitor );
					String str = visitor.result();
					System.out.println("        [" + str + "]");
					visitor.reset();
				}
			}
			catch ( Exception e )
			{ e.printStackTrace(); }
				
			data[i][0] = desc;
			data[i][1] = count;
			data[i][2] = depth;
			data[i][3] = new Double( Math.pow( count.intValue(), (depth.intValue() + 1) ));
			i++;
		}
		myDataModel = new ClassExpTableModel(colNames , data);
		myManipModel = new TableSorter( myDataModel );
		myTable = new JTable( myManipModel );
		myManipModel.setTableHeader( myTable.getTableHeader() );
			
			
			/*
			for ( int vColIndex = 0; vColIndex < 3; vColIndex++ )
			{
				TableColumn col = myTable.getColumnModel().getColumn(vColIndex);
				col.setHeaderRenderer(new RichHeaderRenderer());
			}
			*/
			
		myTable.setDefaultRenderer( OWLObjectImpl.class, new ClassExpRenderer(visitor));
		
		setupUI();
		
		this.addWindowListener( this );
		this.addComponentListener( this );
		myTable.addMouseListener( this );
		this.setSize( 300, 600 );
		this.setVisible( true );
	}
	
	private void setupUI()
	{
		JScrollPane scrollPane = new JScrollPane( myTable );
		myTable.setPreferredScrollableViewportSize(new Dimension(500, 300));

		this.add( scrollPane, BorderLayout.CENTER );
	}
	

	public void windowOpened(WindowEvent e) {}

	public void windowClosing(WindowEvent e) { this.setVisible( false ); this.dispose(); }

	public void windowClosed(WindowEvent e) {}

	public void windowIconified(WindowEvent e) {}

	public void windowDeiconified(WindowEvent e) {}

	public void windowActivated(WindowEvent e) {}

	public void windowDeactivated(WindowEvent e) {}
	

	
	public void componentResized(ComponentEvent e) {}

	public void componentMoved(ComponentEvent e) {}

	public void componentShown(ComponentEvent e) {}

	public void componentHidden(ComponentEvent e) {}

	
	
	public void mouseClicked(MouseEvent e) 
	{
		
		if (e.getClickCount() == 2) 
		{
			if ( e.getSource() instanceof JTable )
			{
				JTable table = (JTable)e.getSource();
				int row = table.getSelectedRow();
				OWLDescription desc = (OWLDescription)table.getValueAt( row, 0 );			
				Vector axioms = (Vector)myIndexer.classExpToAxioms.get( desc );
				
				Vector axiomContainers = new Vector();
				for ( Iterator it = axioms.iterator(); it.hasNext(); )
				{
					OWLClassAxiom axi = (OWLClassAxiom)it.next();
					ClassAxiomContainer container = new ClassAxiomContainer( axi, myIndexer.myShortForms, myIndexer.myModel );
					axiomContainers.add( container );
				}
				AxiomList view = new AxiomList( "Axioms where selected expression occurs in", axiomContainers );
			}
		}
		
	}

	public void mousePressed(MouseEvent e) {}

	public void mouseReleased(MouseEvent e) {}

	public void mouseEntered(MouseEvent e) {}

	public void mouseExited(MouseEvent e) {}
}

⌨️ 快捷键说明

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