use of org.cytoscape.work.undo.UndoSupport in project cytoscape-impl by cytoscape.
the class SelectAdjacentEdgesTaskTest method testRun.
@Test
public void testRun() throws Exception {
UndoSupport undoSupport = mock(UndoSupport.class);
when(r3.get("selected", Boolean.class)).thenReturn(true);
when(r4.get("selected", Boolean.class)).thenReturn(false);
Set<Long> selectedNodes = new HashSet<>();
selectedNodes.add(r3.get(CyNetwork.SUID, Long.class));
when(nodeTable.getMatchingKeys(CyNetwork.SELECTED, true, Long.class)).thenReturn(selectedNodes);
List<CyEdge> el = new ArrayList<CyEdge>();
el.add(e1);
when(net.getAdjacentEdgeList(e3, CyEdge.Type.ANY)).thenReturn(el);
// run the task
Task t = new SelectAdjacentEdgesTask(undoSupport, net, networkViewManager, eventHelper);
t.run(tm);
// check that the expected rows were set
verify(r1, times(1)).set("selected", true);
}
use of org.cytoscape.work.undo.UndoSupport in project cytoscape-impl by cytoscape.
the class SelectFirstNeighborsTaskTest method testRun.
@Test
public void testRun() throws Exception {
UndoSupport undoSupport = mock(UndoSupport.class);
// more setup
when(r3.get("selected", Boolean.class)).thenReturn(true);
when(r4.get("selected", Boolean.class)).thenReturn(false);
Set<Long> selectedNodes = new HashSet<>();
selectedNodes.add(r3.get(CyNetwork.SUID, Long.class));
when(nodeTable.getMatchingKeys(CyNetwork.SELECTED, true, Long.class)).thenReturn(selectedNodes);
List<CyNode> nl = new ArrayList<CyNode>();
nl.add(e4);
when(net.getNeighborList(e3, CyEdge.Type.ANY)).thenReturn(nl);
// run the task
Task t = new SelectFirstNeighborsTask(undoSupport, net, networkViewManager, eventHelper, CyEdge.Type.ANY);
t.run(tm);
// check that the expected rows were set
verify(r4, times(1)).set("selected", true);
}
use of org.cytoscape.work.undo.UndoSupport in project cytoscape-impl by cytoscape.
the class HideFromSelectionTask method run.
@Override
public void run(final TaskMonitor tm) {
tm.setProgress(0.0);
final CyNetwork network = view.getModel();
final List<CyIdentifiable> elements = new ArrayList<>();
List<CyNode> nodes = null;
List<CyEdge> edges = null;
if (hideNodes) {
nodes = CyTableUtil.getNodesInState(network, CyNetwork.SELECTED, selectionValue);
elements.addAll(nodes);
}
tm.setProgress(0.1);
if (hideEdges) {
edges = CyTableUtil.getEdgesInState(network, CyNetwork.SELECTED, selectionValue);
elements.addAll(edges);
}
final UndoSupport undoSupport = serviceRegistrar.getService(UndoSupport.class);
final CyEventHelper eventHelper = serviceRegistrar.getService(CyEventHelper.class);
final VisualMappingManager vmMgr = serviceRegistrar.getService(VisualMappingManager.class);
undoSupport.postEdit(new HideEdit(description, view, elements, false, eventHelper, vmMgr));
tm.setProgress(0.4);
if (nodes != null)
HideUtils.setVisibleNodes(nodes, false, view);
tm.setProgress(0.6);
if (edges != null)
HideUtils.setVisibleEdges(edges, false, view);
tm.setProgress(0.8);
VisualStyle style = vmMgr.getVisualStyle(view);
for (CyIdentifiable e : elements) {
View<? extends CyIdentifiable> ev = null;
if (e instanceof CyNode)
ev = view.getNodeView((CyNode) e);
else if (e instanceof CyEdge)
ev = view.getEdgeView((CyEdge) e);
if (ev != null)
style.apply(network.getRow(e), ev);
}
view.updateView();
tm.setProgress(1.0);
}
use of org.cytoscape.work.undo.UndoSupport in project cytoscape-impl by cytoscape.
the class GenerateDiscreteValuesAction method actionPerformed.
// ==[ PUBLIC METHODS ]=============================================================================================
@Override
public void actionPerformed(final ActionEvent e) {
final VisualPropertySheet selVpSheet = getVizMapperMainPanel().getSelectedVisualPropertySheet();
if (selVpSheet == null)
return;
final Set<VisualPropertySheetItem<?>> vpSheetItems = selVpSheet.getSelectedItems();
new Thread() {
@Override
public void run() {
final Map<DiscreteMapping<?, ?>, Map<Object, Object>> previousMappingValues = new HashMap<DiscreteMapping<?, ?>, Map<Object, Object>>();
final Map<DiscreteMapping<?, ?>, Map<Object, ?>> newMappingValues = new HashMap<DiscreteMapping<?, ?>, Map<Object, ?>>();
for (final VisualPropertySheetItem<?> vpsItem : vpSheetItems) {
final VisualPropertySheetItemModel<?> model = vpsItem.getModel();
final VisualProperty<?> vp = (VisualProperty<?>) model.getVisualProperty();
final Class<?> vpValueType = vp.getRange().getType();
final Class<?> generatorType = generator.getDataType();
final PropertySheetPanel propSheetPnl = vpsItem.getPropSheetPnl();
final Item value = (Item) propSheetPnl.getTable().getValueAt(0, 0);
if (value.isProperty()) {
final VizMapperProperty<?, ?, ?> prop = (VizMapperProperty<?, ?, ?>) value.getProperty();
if (vpValueType.isAssignableFrom(generatorType) || ((generator instanceof NumberSeriesMappingGenerator || generator instanceof RandomNumberMappingGenerator) && Number.class.isAssignableFrom(vpValueType)))
generateValues(vpsItem, prop.getValue().toString(), vp, previousMappingValues, newMappingValues);
}
}
// Undo support
if (!previousMappingValues.isEmpty()) {
final UndoSupport undo = servicesUtil.get(UndoSupport.class);
undo.postEdit(new GenerateValuesEdit(previousMappingValues, newMappingValues));
}
}
}.start();
}
use of org.cytoscape.work.undo.UndoSupport in project cytoscape-impl by cytoscape.
the class EditSelectedDiscreteValuesAction method actionPerformed.
// ==[ PUBLIC METHODS ]=============================================================================================
/**
* Edit all selected cells at once. This is for Discrete Mapping only.
*/
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public void actionPerformed(final ActionEvent e) {
final VizMapperMainPanel vizMapperMainPanel = getVizMapperMainPanel();
if (vizMapperMainPanel == null)
return;
final VisualPropertySheet vpSheet = vizMapperMainPanel.getSelectedVisualPropertySheet();
if (vpSheet == null)
return;
for (final VisualPropertySheetItem<?> vpSheetItem : vpSheet.getSelectedItems()) {
final VisualPropertySheetItemModel<?> model = vpSheetItem.getModel();
final PropertySheetTable table = vpSheetItem.getPropSheetPnl().getTable();
final int[] selected = table.getSelectedRows();
if (selected == null || selected.length == 0 || !(model.getVisualMappingFunction() instanceof DiscreteMapping))
continue;
// Test with the first selected item
final DiscreteMapping dm = (DiscreteMapping) model.getVisualMappingFunction();
final VisualProperty vp = dm.getVisualProperty();
Object newValue = null;
try {
// Get new value
newValue = editorManager.showVisualPropertyValueEditor(vizMapperMainPanel, vp, vp.getDefault());
} catch (Exception ex) {
logger.error("Could not edit value.", ex);
}
if (newValue == null)
continue;
final Map<Object, Object> newValues = new HashMap<Object, Object>();
final Map<Object, Object> previousValues = new HashMap<Object, Object>();
for (int i = 0; i < selected.length; i++) {
final Item item = ((Item) table.getValueAt(selected[i], 0));
if (item != null && item.getProperty() instanceof VizMapperProperty) {
final VizMapperProperty<?, ?, ?> prop = (VizMapperProperty<?, ?, ?>) item.getProperty();
if (prop.getCellType() == CellType.DISCRETE) {
// Save the current value for undo
previousValues.put(prop.getKey(), prop.getValue());
// New value
newValues.put(prop.getKey(), newValue);
}
}
}
// Save the mapping->old_values for undo
if (!previousValues.isEmpty())
previousMappingValues.put(dm, previousValues);
// Save the mapping->new_values for redo
if (!newValues.isEmpty())
newMappingValues.put(dm, newValues);
// Update the visual mapping
dm.putAll(newValues);
}
// Undo support
if (!previousMappingValues.isEmpty()) {
final UndoSupport undo = servicesUtil.get(UndoSupport.class);
undo.postEdit(new EditSelectedDiscreteValuesEdit());
}
}
Aggregations