Package org.jmule.ui.swt.tables

Source Code of org.jmule.ui.swt.tables.BufferedTableItemImpl

/*
*  JMule - Java file sharing client
*  Copyright (C) 2007-2008 JMule team ( jmule@jmule.org / http://jmule.org )
*
*  Any parts of this program derived from other projects, or contributed
*  by third-party developers are copyrighted by their respective authors.
*
*  This program 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.
*
*  This program 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 this program; if not, write to the Free Software
*  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*
*/
package org.jmule.ui.swt.tables;

import org.eclipse.swt.graphics.*;
import org.eclipse.swt.widgets.Table;


/**
* @author Olivier
* @author binary256
* @version $$Revision: 1.2 $$
* Last changed by $$Author: binary256_ $$ on $$Date: 2008/10/16 18:20:02 $$
*/
public abstract class BufferedTableItemImpl implements BufferedTableItem
{
  protected BufferedTableRow row;

  private int position;

  private Color ourFGColor = null;

  public BufferedTableItemImpl(BufferedTableRow row, int position) {
    this.row = row;
    this.position = position;
  }

  public String getText() {
//    if (Utils.SWT32_TABLEPAINT) {
//      return text;
//    }

    if (position != -1)
      return row.getText(position);
    return "";
  }

  public boolean setText(String text) {
//    if (Utils.SWT32_TABLEPAINT) {
//      if (this.text.equals(text)) {
//        return false;
//      }
// 
//      this.text = (text == null) ? "" : text;
//     
//      Rectangle bounds = getBounds();
//      if (bounds != null) {
//        Table table = row.getTable();
//        Rectangle dirty = table.getClientArea().intersection(bounds);
//        table.redraw(dirty.x, dirty.y, dirty.width, dirty.height, false);
//      }
//     
//      return true;
//    }

    if (position != -1)
      return row.setText(position, text);
    return false;
  }

  public void setImage(Image img) {
    if (position != -1)
      row.setImage(position, img);
  }

  public void setRowForeground(Color color) {
    row.setForeground(color);
  }

  public boolean setForeground(Color color) {
    if (position == -1)
      return false;

    boolean ok;
    if (ourFGColor != null) {
      ok = row.setForeground(position, color);
      if (ok) {
        if (!color.isDisposed())
          color.dispose();
        ourFGColor = null;
      }
    } else {
      ok = row.setForeground(position, color);
    }
    return ok;
  }
 
  public Color getForeground() {
    if (position == -1)
      return null;

    return row.getForeground(position);
  }

  public boolean setForeground(int red, int green, int blue) {
    if (position == -1)
      return false;

    Color oldColor = row.getForeground(position);

    RGB newRGB = new RGB(red, green, blue);

    if (oldColor != null && oldColor.getRGB().equals(newRGB)) {
      return false;
    }

    Color newColor = new Color(row.getTable().getDisplay(), newRGB);
    boolean ok = row.setForeground(position, newColor);
    if (ok) {
      if (ourFGColor != null && !ourFGColor.isDisposed())
        ourFGColor.dispose();
      ourFGColor = newColor;
    } else {
      if (!newColor.isDisposed())
        newColor.dispose();
    }

    return ok;
  }

  public Color getBackground() {
    return row.getBackground();
  }

  public Rectangle getBounds() {
    if (position != -1)
      return row.getBounds(position);
    return null;
  }

  public Table getTable() {
    return row.getTable();
  }

  public void dispose() {
    if (ourFGColor != null && !ourFGColor.isDisposed())
      ourFGColor.dispose();
  }

  public boolean isShown() {
    return true;
// XXX Bounds check is almost always slower than any changes we
//     are going to do to the column
//    if (position < 0) {
//      return false;
//    }
//   
//    Rectangle bounds = row.getBounds(position);
//    if (bounds == null) {
//      return false;
//    }
//
//    return row.getTable().getClientArea().intersects(bounds);
  }

  public boolean needsPainting() {
    return false;
  }

  public void doPaint(GC gc) {
  }

  public void locationChanged() {
  }

  public int getPosition() {
    return position;
  }

  public Image getBackgroundImage() {
    Table table = row.getTable();
   
    Rectangle bounds = getBounds();
   
    if (bounds.isEmpty()) {
      return null;
    }
   
    Image image = new Image(table.getDisplay(), bounds.width, bounds.height);
   
    GC gc = new GC(table);
    gc.copyArea(image, bounds.x, bounds.y);
    gc.dispose();
   
    return image;
  }
}
TOP

Related Classes of org.jmule.ui.swt.tables.BufferedTableItemImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.