/*
* Copyright (c) 2016 David Boissier.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.codinjutsu.tools.mongo.view;
import com.intellij.util.ui.ItemRemovable;
import org.codinjutsu.tools.mongo.ServerConfiguration;
import org.codinjutsu.tools.mongo.SshTunnelingConfiguration;
import javax.swing.table.AbstractTableModel;
import java.util.List;
class MongoServerTableModel extends AbstractTableModel implements ItemRemovable {
private final String[] columnNames = new String[]{
"Label",
"URL",
"SSH Tunneling",
"Autoconnect"
};
private final Class[] columnClasses = new Class[]{String.class, String.class, Boolean.class, Boolean.class};
private final List<ServerConfiguration> mongoServerConfigurations;
public MongoServerTableModel(List<ServerConfiguration> mongoServerConfigurations) {
this.mongoServerConfigurations = mongoServerConfigurations;
}
public String getColumnName(int column) {
return columnNames[column];
}
public Class getColumnClass(int column) {
return columnClasses[column];
}
public int getColumnCount() {
return 4;
}
public int getRowCount() {
return mongoServerConfigurations.size();
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Object getValueAt(int row, int column) {
ServerConfiguration configuration = mongoServerConfigurations.get(row);
switch (column) {
case 0: { // "Label" column
return configuration.getLabel();
}
case 1: { // "URL" column
return configuration.getUrlsInSingleString();
}
case 2: { // "SSH Tunneling" column
return !SshTunnelingConfiguration.isEmpty(configuration.getSshTunnelingConfiguration());
}
case 3: { // "Autoconnect" column
return configuration.isConnectOnIdeStartup();
}
default: {
throw new IllegalArgumentException();
}
}
}
public void setValueAt(Object value, int row, int column) {
ServerConfiguration configuration = mongoServerConfigurations.get(row);
switch (column) {
case 0: {
configuration.setLabel((String) value);
break;
}
case 1: {
//do nothing url = serverHosts
break;
}
case 2: {
//do nothing url = serverHosts
break;
}
case 3: {
configuration.setConnectOnIdeStartup((Boolean) value);
break;
}
default: {
throw new IllegalArgumentException();
}
}
}
public void removeRow(int index) {
mongoServerConfigurations.remove(index);
fireTableRowsDeleted(index, index);
}
}