/** * Created on Sep 25, 2008 * * 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 com.aelitis.azureus.ui.swt.columns.vuzeactivity; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Rectangle; import org.gudy.azureus2.ui.swt.views.table.CoreTableColumnSWT; import org.gudy.azureus2.ui.swt.views.table.TableCellSWT; import org.gudy.azureus2.ui.swt.views.table.TableCellSWTPaintListener; import com.aelitis.azureus.activities.VuzeActivitiesEntry; import com.aelitis.azureus.ui.swt.imageloader.ImageLoader; import org.gudy.azureus2.plugins.ui.tables.*; /** * @author TuxPaper * @created Sep 25, 2008 * */ public class ColumnActivityNew extends CoreTableColumnSWT implements TableCellSWTPaintListener, TableCellAddedListener, TableCellRefreshListener, TableCellMouseListener { public static final String COLUMN_ID = "activityNew"; private static int WIDTH = 38; // enough to fit title private static Image imgNew; private static Image imgOld; /** * @param name * @param tableID */ public ColumnActivityNew(String tableID) { super(COLUMN_ID, tableID); initializeAsGraphic(WIDTH); setAlignment(ALIGN_CENTER); imgNew = ImageLoader.getInstance().getImage("image.activity.unread"); imgOld = ImageLoader.getInstance().getImage("image.activity.read"); } // @see org.gudy.azureus2.ui.swt.views.table.TableCellSWTPaintListener#cellPaint(org.eclipse.swt.graphics.GC, org.gudy.azureus2.plugins.ui.tables.TableCell) public void cellPaint(GC gc, TableCellSWT cell) { VuzeActivitiesEntry entry = (VuzeActivitiesEntry) cell.getDataSource(); Rectangle cellBounds = cell.getBounds(); Image img = entry.getReadOn() <= 0 ? imgNew : imgOld; if (img != null && !img.isDisposed()) { Rectangle imgBounds = img.getBounds(); gc.drawImage(img, cellBounds.x + ((cellBounds.width - imgBounds.width) / 2), cellBounds.y + ((cellBounds.height - imgBounds.height) / 2)); } } // @see org.gudy.azureus2.plugins.ui.tables.TableCellAddedListener#cellAdded(org.gudy.azureus2.plugins.ui.tables.TableCell) public void cellAdded(TableCell cell) { cell.setMarginWidth(0); cell.setMarginHeight(0); } // @see org.gudy.azureus2.plugins.ui.tables.TableCellRefreshListener#refresh(org.gudy.azureus2.plugins.ui.tables.TableCell) public void refresh(TableCell cell) { VuzeActivitiesEntry entry = (VuzeActivitiesEntry) cell.getDataSource(); boolean isRead = entry.getReadOn() > 0; int sortVal = isRead ? 1 : 0; if (cell.setSortValue(sortVal)) { cell.invalidate(); } } // @see org.gudy.azureus2.plugins.ui.tables.TableCellMouseListener#cellMouseTrigger(org.gudy.azureus2.plugins.ui.tables.TableCellMouseEvent) public void cellMouseTrigger(final TableCellMouseEvent event) { if (event.eventType == TableRowMouseEvent.EVENT_MOUSEDOWN && event.button == 1) { VuzeActivitiesEntry entry = (VuzeActivitiesEntry) event.cell.getDataSource(); if (entry.canFlipRead()) { entry.setRead(!entry.isRead()); event.cell.invalidate(); } } } }