📄 tablecolumnimpl.java
字号:
/*
* Copyright (C) 2004, 2005, 2006 Aelitis SAS, 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; either version 2 of the License.
*
* 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 ( see the LICENSE file ).
*
* 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
*
* AELITIS, SAS au capital de 46,603.30 euros,
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*/
package org.gudy.azureus2.ui.swt.views.table.impl;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.SWT;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.pluginsimpl.local.ui.tables.TableContextMenuItemImpl;
import org.gudy.azureus2.ui.swt.views.table.TableCellCore;
import org.gudy.azureus2.ui.swt.views.table.TableColumnCore;
import org.gudy.azureus2.ui.swt.views.table.TableRowCore;
import org.gudy.azureus2.ui.swt.views.table.utils.TableStructureEventDispatcher;
import org.gudy.azureus2.plugins.ui.UIRuntimeException;
import org.gudy.azureus2.plugins.ui.tables.*;
/** Table Column definition and modification routines.
* Implements both the plugin API and the core API.
**/
public class TableColumnImpl
implements TableColumnCore
{
private String sName;
private String sTitleLanguageKey = null;
private int iAlignment;
private int iType;
private int iPosition;
private int iWidth;
private int iInterval;
private long lLastSortValueChange;
private String sTableID;
private boolean bColumnAdded;
private boolean bCoreDataSource;
private ArrayList cellRefreshListeners;
private ArrayList cellAddedListeners;
private ArrayList cellDisposeListeners;
private ArrayList cellToolTipListeners;
private ArrayList cellMouseListeners;
private ArrayList cellVisibilityListeners;
private int iConsecutiveErrCount;
private ArrayList menuItems;
private boolean bObfusticateData;
protected AEMonitor this_mon = new AEMonitor( "TableColumn" );
private boolean bSortValueLive;
private long lStatsRefreshTotalTime;
private long lStatsRefreshCount = 0;
private long lStatsRefreshZeroCount = 0;
private boolean bSortAscending;
/** Create a column object for the specified table.
*
* @param tableID table in which the column belongs to
* @param columnID name/id of the column
*/
public TableColumnImpl(String tableID, String columnID) {
sTableID = tableID;
sName = columnID;
iType = TYPE_TEXT_ONLY;
iPosition = POSITION_INVISIBLE;
iWidth = 50;
iAlignment = ALIGN_LEAD;
bColumnAdded = false;
bCoreDataSource = false;
iInterval = INTERVAL_INVALID_ONLY;
iConsecutiveErrCount = 0;
lLastSortValueChange = 0;
}
public void initialize(int iAlignment, int iPosition,
int iWidth, int iInterval) {
if (bColumnAdded)
throw(new UIRuntimeException("Can't set properties. Column '" + sName + " already added"));
this.iAlignment = iAlignment;
this.iPosition = iPosition;
this.iWidth = iWidth;
this.iInterval = iInterval;
}
public void initialize(int iAlignment,
int iPosition,
int iWidth)
{
if (bColumnAdded)
throw(new UIRuntimeException("Can't set properties. Column '" + sName + " already added"));
this.iAlignment = iAlignment;
this.iPosition = iPosition;
this.iWidth = iWidth;
}
public String getName() {
return sName;
}
public String getTableID() {
return sTableID;
}
public void setType(int type) {
if (bColumnAdded)
throw(new UIRuntimeException("Can't set properties. Column '" + sName + " already added"));
iType = type;
}
public int getType() {
return iType;
}
public void setWidth(int width) {
if (width == iWidth || width < 0)
return;
iWidth = width;
if (bColumnAdded && iPosition != POSITION_INVISIBLE) {
TableStructureEventDispatcher tsed = TableStructureEventDispatcher.getInstance(sTableID);
tsed.columnSizeChanged(this);
if (iType == TYPE_GRAPHIC)
invalidateCells();
}
}
public int getWidth() {
return iWidth;
}
public void setPosition(int position) {
if (bColumnAdded)
throw(new UIRuntimeException("Can't set properties. Column '" + sName + " already added"));
iPosition = position;
}
public int getPosition() {
return iPosition;
}
public void setAlignment(int alignment) {
if (bColumnAdded)
throw(new UIRuntimeException("Can't set properties. Column '" + sName + " already added"));
iAlignment = alignment;
}
public int getAlignment() {
return iAlignment;
}
public void addCellRefreshListener(TableCellRefreshListener listener) {
try{
this_mon.enter();
if (cellRefreshListeners == null)
cellRefreshListeners = new ArrayList(1);
cellRefreshListeners.add(listener);
//System.out.println(this + " :: addCellRefreshListener " + listener + ". " + cellRefreshListeners.size());
}finally{
this_mon.exit();
}
}
public List getCellRefreshListeners(){
try{
this_mon.enter();
if (cellRefreshListeners == null){
return( new ArrayList(0));
}
return( new ArrayList( cellRefreshListeners ));
}finally{
this_mon.exit();
}
}
public void removeCellRefreshListener(TableCellRefreshListener listener) {
try{
this_mon.enter();
if (cellRefreshListeners == null)
return;
cellRefreshListeners.remove(listener);
}finally{
this_mon.exit();
}
}
public boolean hasCellRefreshListener() {
return cellRefreshListeners != null && cellRefreshListeners.size() > 0;
}
public void setRefreshInterval(int interval) {
iInterval = interval;
}
public int getRefreshInterval() {
return iInterval;
}
public void addCellAddedListener(TableCellAddedListener listener) {
try{
this_mon.enter();
if (cellAddedListeners == null)
cellAddedListeners = new ArrayList(1);
cellAddedListeners.add(listener);
}finally{
this_mon.exit();
}
}
public List getCellAddedListeners(){
try{
this_mon.enter();
if (cellAddedListeners == null){
return( new ArrayList(0));
}
return( new ArrayList( cellAddedListeners ));
}finally{
this_mon.exit();
}
}
public void removeCellAddedListener(TableCellAddedListener listener) {
try{
this_mon.enter();
if (cellAddedListeners == null)
return;
cellAddedListeners.remove(listener);
}finally{
this_mon.exit();
}
}
public void addCellDisposeListener(TableCellDisposeListener listener) {
try{
this_mon.enter();
if (cellDisposeListeners == null)
cellDisposeListeners = new ArrayList(1);
cellDisposeListeners.add(listener);
}finally{
this_mon.exit();
}
}
public void removeCellDisposeListener(TableCellDisposeListener listener) {
try{
this_mon.enter();
if (cellDisposeListeners == null)
return;
cellDisposeListeners.remove(listener);
}finally{
this_mon.exit();
}
}
public void addCellToolTipListener(TableCellToolTipListener listener) {
try{
this_mon.enter();
if (cellToolTipListeners == null)
cellToolTipListeners = new ArrayList(1);
cellToolTipListeners.add(listener);
}finally{
this_mon.exit();
}
}
public void removeCellToolTipListener(TableCellToolTipListener listener) {
try{
this_mon.enter();
if (cellToolTipListeners == null)
return;
cellToolTipListeners.remove(listener);
}finally{
this_mon.exit();
}
}
public void addCellMouseListener(TableCellMouseListener listener) {
try {
this_mon.enter();
if (cellMouseListeners == null)
cellMouseListeners = new ArrayList(1);
cellMouseListeners.add(listener);
} finally {
this_mon.exit();
}
}
public void removeCellMouseListener(TableCellMouseListener listener) {
try {
this_mon.enter();
if (cellMouseListeners == null)
return;
cellMouseListeners.remove(listener);
} finally {
this_mon.exit();
}
}
public void addCellVisibilityListener(TableCellVisibilityListener listener) {
try {
this_mon.enter();
if (cellVisibilityListeners == null)
cellVisibilityListeners = new ArrayList(1);
cellVisibilityListeners.add(listener);
} finally {
this_mon.exit();
}
}
public void removeCellVisibilityListener(TableCellVisibilityListener listener) {
try {
this_mon.enter();
if (cellVisibilityListeners == null)
return;
cellVisibilityListeners.remove(listener);
} finally {
this_mon.exit();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -