PropertiesTable.java :  » UML » MetaBoss » com » metaboss » applications » designstudio » propertiesview » Java Open Source

Java Open Source » UML » MetaBoss 
MetaBoss » com » metaboss » applications » designstudio » propertiesview » PropertiesTable.java
// THIS SOFTWARE IS PROVIDED BY SOFTARIS PTY.LTD. AND OTHER METABOSS
// CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
// BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SOFTARIS PTY.LTD.
// OR OTHER METABOSS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF SOFTARIS PTY.LTD. OR OTHER METABOSS CONTRIBUTORS ARE ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// Copyright 2000-2005  Softaris Pty.Ltd. All Rights Reserved.
package com.metaboss.applications.designstudio.propertiesview;

import java.awt.Component;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;

import com.metaboss.applications.designstudio.Application;

/*    Properties panel table    */

public class PropertiesTable extends JTable
{
  private TableColumn   mFirstColumn = null;
  private TableColumn   mSecondColumn = null;
  private boolean      mMoving = false;
  private boolean     mLoading = true;


  public PropertiesTable(AbstractTableModel pModel)
  {
    super(pModel); 
    
    setTableHeader(null);
    setCellSelectionEnabled(false);
    setRowSelectionAllowed(false);
    setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    setGridColor(UIManager.getColor("control").darker());
    setBackground(UIManager.getColor("control"));
    
    mFirstColumn = getColumnModel().getColumn(0);
    mSecondColumn = getColumnModel().getColumn(1);
    
    mFirstColumn.setWidth(getFirstColumnWidth());
    mFirstColumn.setMinWidth(getFirstColumnWidth());
    mFirstColumn.setMaxWidth(getFirstColumnWidth());
    mFirstColumn.setCellRenderer(new PropertiesCellrenderer(true));
    
    mSecondColumn.setCellRenderer(new PropertiesCellrenderer(false));
    
    addMouseMotionListener(new TableMouseMotionAdapter(this));
    addMouseListener(new TableMouseAdapter());
    
    mLoading = false;
  }

  public int getFirstColumnWidth()
  {
    return 180;
  }

    protected void processMouseMotionEvent(MouseEvent e)
    {
        super.processMouseMotionEvent(e);
    if (mMoving) setFirstColumnWidth(e.getX());
    }

    public void reshape(int x, int y, int w, int h)
    {
        super.reshape(x, y, w, h);
    if (!mLoading && getWidth()>0) 
      setFirstColumnWidth(mFirstColumn.getWidth());
    }

  private boolean isMoveCursor(int x)
  {
    return (x>mFirstColumn.getWidth()-5 && x<mFirstColumn.getWidth()+5);
  }

  private void setFirstColumnWidth(int pWidth)
  {
    if (pWidth<20) pWidth = 20;
    if (pWidth>getWidth()-20) pWidth = getWidth()-20;

    mFirstColumn.setWidth(pWidth);
    mFirstColumn.setMinWidth(pWidth);
    mFirstColumn.setMaxWidth(pWidth);
  }
  
  /*    Mouse Adapter class    */
  
  public class TableMouseAdapter extends MouseAdapter
  {
        public void mousePressed(MouseEvent e)
        {
            super.mousePressed(e);
      if (isMoveCursor(e.getX())) mMoving = true;
        }
        
        public void mouseReleased(MouseEvent e)
        {
            super.mouseReleased(e);
      mMoving = false;
        }
  }
  
  /*    Table Mouse Moution Adapter class    */
  
  public class TableMouseMotionAdapter extends MouseMotionAdapter
  {
    private JTable       mTable = null;
    
    public TableMouseMotionAdapter(JTable pTable)
    {
      super();
      mTable = pTable;
    }

    public void mouseMoved(MouseEvent e)
    {
      if (isMoveCursor(e.getX()))
        mTable.setCursor(new Cursor(Cursor.W_RESIZE_CURSOR));
      else  
        mTable.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
    }
  }
  
  /*    Cell Renderer    */
  
  public class PropertiesCellrenderer extends DefaultTableCellRenderer
  {
    private boolean mUseFont = false;
    
    public PropertiesCellrenderer(boolean pUseFont)
    {
      super();
      mUseFont = pUseFont;
    }

    public void setFont(Font font)
    {
      if (mUseFont)
        super.setFont(Application.DEFAULT_FONT_BOLD);
      else
        super.setFont(font);
    }

    
    public Component getTableCellRendererComponent(JTable table,
       Object value, boolean isSelected, boolean hasFocus,
       int row, int column)
    {
      if (!getCellSelectionEnabled())
      {
        this.setBackground(UIManager.getColor("control"));
        super.getTableCellRendererComponent(table, value, false, false, row, column);
        return this;
      }
      else      
        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }        
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.