
org.hjug.dtangler.swingui.dsm.impl.SwingDsmView Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dtangler-swingui Show documentation
Show all versions of dtangler-swingui Show documentation
Directly usable user interface
The newest version!
//This product is provided under the terms of EPL (Eclipse Public License)
//version 2.0.
//
//The full license text can be read from: https://www.eclipse.org/legal/epl-2.0/
package org.hjug.dtangler.swingui.dsm.impl;
import javax.swing.JComponent;
import javax.swing.JPopupMenu;
import javax.swing.JTable;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableModel;
import org.hjug.dtangler.swingui.dsm.DsmView;
import org.hjug.dtangler.ui.dsm.CellInfo;
import org.hjug.dtangler.ui.dsm.DependableInfo;
public class SwingDsmView extends JTable implements DsmView {
JPopupMenu popupMenuForHeaderCells;
JPopupMenu popupMenuForDataCells;
public SwingDsmView() {
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
getTableHeader().setReorderingAllowed(false);
setCellSelectionEnabled(true);
setDefaultRenderer(CellInfo.class, new CellInfoTableCellRenderer());
setDefaultRenderer(DependableInfo.class,
new DependableInfoRowTableCellRenderer());
getTableHeader().setDefaultRenderer(
new DependableInfoColumnTableCellRenderer());
}
public JComponent getJComponent() {
return this;
}
public void setPopupMenuForHeaderCells(JPopupMenu popupMenu) {
this.popupMenuForHeaderCells = popupMenu;
}
public void setPopupMenuForDataCells(JPopupMenu popupMenu) {
this.popupMenuForDataCells = popupMenu;
}
private void setDefaultMenu() {
if (popupMenuForHeaderCells != null)
this.setComponentPopupMenu(popupMenuForHeaderCells);
}
public void refreshPopupMenu() {
int[] selectedColumns = getSelectedColumns();
int[] selectedRows = getSelectedRows();
if (selectedColumns == null)
return;
for (int col : selectedColumns) {
if (col == 0) {
this.setComponentPopupMenu(popupMenuForHeaderCells);
break;
} else {
if (selectedColumns.length == 1 && selectedRows != null
&& selectedRows.length == 1) {
if (col - 1 == selectedRows[0]) {
this.setComponentPopupMenu(popupMenuForHeaderCells);
break;
}
}
this.setComponentPopupMenu(popupMenuForDataCells);
break;
}
}
if (this.getComponentPopupMenu() == null)
setDefaultMenu();
}
public void setTableModel(TableModel model) {
super.setModel(model);
refreshTableStructure();
}
private void setColumnWidths() {
getColumnModel().getColumn(0).setPreferredWidth(300);
for (int i = 1; i < getColumnModel().getColumnCount(); i++)
getColumnModel().getColumn(i).setPreferredWidth(35);
}
public void addSelectionListener(ListSelectionListener listener) {
getSelectionModel().addListSelectionListener(listener);
getColumnModel().getSelectionModel().addListSelectionListener(listener);
}
public void refreshTableStructure() {
setColumnWidths();
}
public void refresh() {
getTableHeader().repaint();
repaint();
}
}