//This product is provided under the terms of EPL (Eclipse Public License)
//version 1.0.
//
//The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php
package org.dtangler.swingui.dsm.impl;
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.dtangler.swingui.dsm.DsmView;
import org.dtangler.ui.dsm.DsmGuiModel;
import org.dtangler.ui.dsm.DsmGuiModelChangeListener;
public class DsmPresenter implements ListSelectionListener,
DsmGuiModelChangeListener {
private final DsmTableModelAdapter tableModel;
private final DsmGuiModel model;
private final DsmView view;
DsmPresenter(DsmView view, DsmGuiModel model) {
this.view = view;
this.model = model;
tableModel = new DsmTableModelAdapter(model);
view.setTableModel(tableModel);
view.addSelectionListener(this);
model.addChangeListener(this);
}
public void dsmGuiModelChanged() {
view.refresh();
}
public void dsmDataChanged() {
tableModel.fireTableStructureChanged();
view.refreshTableStructure();
}
public void valueChanged(ListSelectionEvent e) {
model.selectCells(normalizeIndices(view.getSelectedRows(), 0),
normalizeIndices(view.getSelectedColumns(), -1));
view.refreshPopupMenu();
}
private List<Integer> normalizeIndices(int[] selectedColumns, int delta) {
List<Integer> result = new ArrayList();
for (int col : selectedColumns) {
int index = col + delta;
if (index >= 0)
result.add(index);
}
return result;
}
}