/******************************************************************************* * 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.components.tables.creator; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; import com.opendoorlogistics.core.scripts.elements.ScriptElementType; import com.opendoorlogistics.core.scripts.io.XMLConversionHandlerImpl; import com.opendoorlogistics.core.tables.memory.ODLTableDefinitionImpl; import com.opendoorlogistics.core.utils.Serialization; import com.opendoorlogistics.utils.ui.TablePanel; final public class DatastoreEditorPanel extends JPanel { private final boolean showFlags; public DatastoreEditorPanel(DatastoreConfig config) { this(config,true); } public DatastoreEditorPanel(final DatastoreConfig config, boolean showFlags) { this.showFlags = showFlags; BorderLayout bl = new BorderLayout(); setLayout(bl); bl.setVgap(10); TablesPanel tablesPanel = new TablesPanel(config.getTables()); tablesPanel.setBorder(BorderFactory.createLineBorder(Color.darkGray, 1)); tablesPanel.setPreferredSize(new Dimension(400, 200)); add(tablesPanel, BorderLayout.CENTER); // setTitle("Datastore editor"); } private class TablesPanel extends TablePanel<ODLTableDefinitionImpl>{ public TablesPanel(List<ODLTableDefinitionImpl> items) { super(items, "table"); addTitleLabel("Tables"); setConversionHandler(new XMLConversionHandlerImpl(ScriptElementType.TABLE_DEFINITION)); } @Override protected ODLTableDefinitionImpl createNewItem() { return editItem(new ODLTableDefinitionImpl(-1, "New table")); } @Override protected ODLTableDefinitionImpl editItem(ODLTableDefinitionImpl item) { item = (ODLTableDefinitionImpl)Serialization.deepCopy(item); TableDefinitionDlg dlg = new TableDefinitionDlg(SwingUtilities.getWindowAncestor(this), item, showFlags); dlg.setLocationRelativeTo(this); if(dlg.showModal() == TableDefinitionDlg.OK_OPTION){ // save changes return item; } return null; } @Override protected TableModel createTableModel() { return new AbstractTableModel() { @Override public String getColumnName(int indx){ switch(indx){ case 0: return "Name"; case 1: return "Number of columns"; } return ""; } @Override public Object getValueAt(int rowIndex, int columnIndex) { ODLTableDefinitionImpl config = items.get(rowIndex); switch(columnIndex){ case 0: return config.getName(); case 1: return Integer.toString(config.getColumnCount()); } return ""; } @Override public int getRowCount() { return items.size(); } @Override public int getColumnCount() { return 2; } }; } } }