import com.ulcjava.base.application.AbstractApplication;
import com.ulcjava.base.application.ULCTable;
import com.ulcjava.base.application.ULCFrame;
import com.ulcjava.base.application.ULCComponent;
import com.ulcjava.base.application.dnd.TransferHandler;
import com.ulcjava.base.application.dnd.Transferable;
import com.ulcjava.base.application.table.AbstractTableModel;
import com.ulcjava.base.development.DevelopmentRunner;
import com.ulcjava.base.client.UITable;
import com.ulcjava.base.client.dnd.*;
import java.awt.*;
public class PR7636 extends AbstractApplication {
public void start() {
ULCTable table = new ULCTable();
initGrid(table);
ULCFrame frame = new ULCFrame();
frame.add(table);
frame.setSize(640, 480);
frame.setVisible(true);
}
public static void main(String[] args) {
DevelopmentRunner.setApplicationClass(PR7636.class);
DevelopmentRunner.main(args);
}
private void initGrid(final ULCTable table) {
AbstractTableModel model = new AbstractTableModel() {
public int getRowCount() {
return 10000;
}
public int getColumnCount() {
return 20;
}
public Object getValueAt(int row, int column) {
return "Large CellValue which in our case is multiline: " + row + "/" + column;
}
public void setValueAt(Object value, int rowIndex, int columnIndex) {
}
};
table.setModel(model);
table.setDragEnabled(true);
table.setTransferHandler(new TransferHandler(){
@Override
public boolean importData(ULCComponent targetComponent, Transferable transferable) {
return false;
}
@Override
public void exportDone(ULCComponent sourceComponent, Transferable transferable, int dropAction) {
}
});
}
public static class ULCFixedTable extends ULCTable {
@Override
protected String typeString() {
return UIFixedTable.class.getName();
}
}
public static class UIFixedTable extends UITable {
protected AbstractDragGestureListener createDragGestureListener(AbstractDragSourceListener dragSourceListener) {
return new FixedTableDragGestureListener(dragSourceListener);
}
public class FixedTableDragGestureListener extends TableDragGestureListener {
public FixedTableDragGestureListener(AbstractDragSourceListener dragSourceListener) {
super(dragSourceListener);
}
@Override
protected DragImage createDragImage(Point dragOrigin) {
if (getBasicTable().getSelectedRowCount() > 10){
return null;
} else {
return super.createDragImage(dragOrigin);
}
}
@Override
protected IDnDData createDragData() {
if (getBasicTable().getSelectedRowCount() > 100){
return new DnDTableData(UIFixedTable.this, getBasicTable().getSelectedRows(), getBasicTable().getSelectedColumns(), "");
} else {
return super.createDragData();
}
}
}
}
}