/**
* Created on Jan 3, 2009
*
* Copyright 2008 Vuze, Inc. All rights reserved.
* 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; version 2 of the License only.
*
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.gudy.azureus2.ui.swt.views.columnsetup;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Rectangle;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.views.columnsetup.TableColumnSetupWindow.TableViewColumnSetup;
import org.gudy.azureus2.ui.swt.views.table.TableCellSWT;
import org.gudy.azureus2.ui.swt.views.table.TableCellSWTPaintListener;
import org.gudy.azureus2.ui.swt.views.table.impl.FakeTableCell;
import org.gudy.azureus2.ui.swt.views.table.impl.TableCellImpl;
import org.gudy.azureus2.ui.swt.views.table.utils.CoreTableColumn;
import com.aelitis.azureus.ui.common.table.TableCellCore;
import com.aelitis.azureus.ui.common.table.TableColumnCore;
import com.aelitis.azureus.ui.common.table.TableRowCore;
import org.gudy.azureus2.plugins.ui.tables.*;
/**
* @author TuxPaper
* @created Jan 3, 2009
*
*/
public class ColumnTC_Sample
extends CoreTableColumn
implements TableCellAddedListener
{
public static final String COLUMN_ID = "TableColumnSample";
public ColumnTC_Sample(String tableID) {
super(COLUMN_ID, tableID);
setPosition(POSITION_INVISIBLE);
setRefreshInterval(INTERVAL_LIVE);
setWidth(120);
}
// @see org.gudy.azureus2.plugins.ui.tables.TableCellAddedListener#cellAdded(org.gudy.azureus2.plugins.ui.tables.TableCell)
public void cellAdded(final TableCell cell) {
Utils.execSWTThread(new AERunnable() {
public void runSupport() {
TableColumnCore column = (TableColumnCore) cell.getDataSource();
TableViewColumnSetup tv = (TableViewColumnSetup) ((TableCellCore) cell).getTableRowCore().getView();
TableRowCore sampleRow = (TableRowCore) tv.getSampleRow();
cell.addListeners(new Cell(cell, column, tv, sampleRow));
}
});
}
public class Cell
implements TableCellRefreshListener, TableCellSWTPaintListener,
TableCellVisibilityListener
{
private final TableColumnCore column;
private FakeTableCell sampleCell;
public Cell(TableCell parentCell, TableColumnCore column, TableViewColumnSetup tv, TableRowCore sampleRow) {
this.column = column;
if (sampleRow == null) {
return;
}
sampleCell = new FakeTableCell(column);
sampleCell.setControl(tv.getTableComposite());
Rectangle bounds = ((TableCellImpl)parentCell).getBounds();
sampleCell.setCellArea(bounds);
if (sampleRow != null) {
sampleCell.setDataSource(((TableRowCore)sampleRow).getDataSource(true));
}
}
// @see org.gudy.azureus2.ui.swt.views.table.TableCellSWTPaintListener#cellPaint(org.eclipse.swt.graphics.GC, org.gudy.azureus2.ui.swt.views.table.TableCellSWT)
public void cellPaint(GC gc, TableCellSWT cell) {
if (sampleCell == null) {
return;
}
Rectangle bounds = ((TableCellImpl)cell).getBounds();
sampleCell.setCellArea(bounds);
try {
sampleCell.doPaint(gc);
} catch (Throwable e) {
Debug.out(e);
}
}
// @see org.gudy.azureus2.plugins.ui.tables.TableCellVisibilityListener#cellVisibilityChanged(org.gudy.azureus2.plugins.ui.tables.TableCell, int)
public void cellVisibilityChanged(TableCell cell, int visibility) {
if (sampleCell == null) {
return;
}
try {
column.invokeCellVisibilityListeners((TableCellCore) sampleCell, visibility);
} catch (Throwable e) {
Debug.out(e);
}
}
// @see org.gudy.azureus2.plugins.ui.tables.TableCellRefreshListener#refresh(org.gudy.azureus2.plugins.ui.tables.TableCell)
public void refresh(TableCell cell) {
if (sampleCell == null) {
return;
}
if (!cell.isShown()) {
return;
}
sampleCell.refresh(true, true, true);
cell.setSortValue(sampleCell.getSortValue());
//cell.setText(sampleCell.getText());
}
}
}