/*******************************************************************************
* Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt
******************************************************************************/
package com.opendoorlogistics.studio.scripts.editor.wizardgenerated;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableModel;
import com.opendoorlogistics.api.tables.ODLTableDefinition;
import com.opendoorlogistics.core.scripts.utils.ScriptFieldsParser.SourcedTable;
import com.opendoorlogistics.core.utils.strings.Strings;
class TableListings extends JTable{
TableListings(){
setFillsViewportHeight(true);
}
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component ret = super.prepareRenderer(renderer, row, column);
TableListingsModel tlm = (TableListingsModel)getModel();
if (!isRowSelected(row) && tlm.isCurrentOption(row)) {
ret.setForeground(new Color(20, 100, 20));
}else if(isRowSelected(row)){
ret.setForeground(Color.WHITE);
}else{
ret.setForeground(Color.BLACK);
}
return ret;
}
@Override
public void setModel(TableModel dataModel) {
// get current selected table
SourcedTable currentSel=null;
TableModel currentModel = getModel();
if(currentModel!=null && TableListingsModel.class.isInstance(currentModel) && getSelectedRow()>=0){
currentSel = ((TableListingsModel)currentModel).getTableDetails(getSelectedRow());
}
// set new model
super.setModel(dataModel);
// try selecting same table
if(currentSel!=null && dataModel!=null && TableListingsModel.class.isInstance(dataModel)){
TableListingsModel newModel = (TableListingsModel)dataModel;
int n = newModel.getRowCount();
for(int row =0 ; row<n;row++){
SourcedTable table = newModel.getTableDetails(row);
if(Strings.equalsStd(table.getDatastoreId(), currentSel.getDatastoreId()) && Strings.equalsStd(table.getTableName(), currentSel.getTableName())){
getSelectionModel().setSelectionInterval(row, row);
break;
}
}
}
}
}