X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.ui%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fui%2FSpreadsheetModel.java;h=137cde7a44832cc160e6825f5cbb4659df0fd667;hb=HEAD;hp=5339796bddbf62aaa945f1f64dba4f6c7a91ce16;hpb=5915c1bbd6d0c6125aa3c815c7843339190f28e4;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java index 5339796bd..137cde7a4 100644 --- a/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java +++ b/bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/SpreadsheetModel.java @@ -25,6 +25,7 @@ import java.awt.event.KeyEvent; import java.io.IOException; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -67,25 +68,28 @@ import org.simantics.scenegraph.INode; import org.simantics.scenegraph.swing.JScrollPaneSG; import org.simantics.spreadsheet.Adaptable; import org.simantics.spreadsheet.CellEditor; -import org.simantics.spreadsheet.CellEditor.Transaction; import org.simantics.spreadsheet.ClientModel; -import org.simantics.spreadsheet.ClientModel.OperationMode; +import org.simantics.spreadsheet.OperationMode; import org.simantics.spreadsheet.SheetCommands; +import org.simantics.spreadsheet.Spreadsheets; +import org.simantics.spreadsheet.Transaction; import org.simantics.spreadsheet.common.cell.Parsers; import org.simantics.spreadsheet.common.cell.StringCellParser; import org.simantics.spreadsheet.event.model.RemoveCellHandler; -import org.simantics.spreadsheet.util.SpreadsheetUtils; import org.simantics.ui.colors.Colors; import org.simantics.ui.dnd.LocalObjectTransfer; import org.simantics.ui.dnd.LocalObjectTransferable; import org.simantics.ui.fonts.Fonts; -import org.simantics.utils.ui.dialogs.ShowMessage; import org.simantics.utils.ui.awt.WrapLayout; +import org.simantics.utils.ui.dialogs.ShowMessage; import org.simantics.utils.ui.jface.ActiveSelectionProvider; @SuppressWarnings({ "rawtypes", "unchecked" }) public class SpreadsheetModel { + final private static String OPERATIONMODE = "Operation Mode"; + final private static String EDITMODE = "Edit Mode"; + final private Adaptable serverInterface; final private ClientModel clientModel; final private ActiveSelectionProvider selectionProvider; @@ -405,16 +409,16 @@ public class SpreadsheetModel { for(int col : selectedColumns) { for(int row : selectedRows) { - String location = SpreadsheetUtils.cellName(row, col); + String location = Spreadsheets.cellName(row, col); // No if(index == 0) { if(col > 0) { - String left = SpreadsheetUtils.cellName(row, col-1); + String left = Spreadsheets.cellName(row, col-1); setCurrent(left, getCurrent(left, row, col-1) & 2); } if(row > 0) { - String up = SpreadsheetUtils.cellName(row-1, col); + String up = Spreadsheets.cellName(row-1, col); setCurrent(up, getCurrent(up, row-1, col) & 1); } setCurrent(location, 0); @@ -426,14 +430,14 @@ public class SpreadsheetModel { // Top else if(index == 2) { if(row > 0) { - String up = SpreadsheetUtils.cellName(row-1, col); + String up = Spreadsheets.cellName(row-1, col); setCurrent(up, getCurrent(up, row-1, col) | 2); } } // Left else if(index == 3) { if(col > 0) { - String left = SpreadsheetUtils.cellName(row, col-1); + String left = Spreadsheets.cellName(row, col-1); setCurrent(left, getCurrent(left, row, col-1) | 1); } } @@ -526,7 +530,7 @@ public class SpreadsheetModel { if (selection.intersects(span)) { selection = selection.union(span); found = true; - String location = SpreadsheetUtils.cellName(span.y, span.x); + String location = Spreadsheets.cellName(span.y, span.x); editor.edit(transaction, location, ClientModel.ROW_SPAN, 1, Bindings.INTEGER, null); editor.edit(transaction, location, ClientModel.COLUMN_SPAN, 1, Bindings.INTEGER, null); iter.remove(); @@ -534,7 +538,7 @@ public class SpreadsheetModel { } } - String location = SpreadsheetUtils.cellName(selection.y, selection.x); + String location = Spreadsheets.cellName(selection.y, selection.x); if (selection.height > 1) { editor.edit(transaction, location, ClientModel.ROW_SPAN, selection.height, Bindings.INTEGER, null); } @@ -601,9 +605,12 @@ public class SpreadsheetModel { CellEditor editor = serverInterface.getAdapter(CellEditor.class); if (editor != null) { - if (arg0.getStateChange() == ItemEvent.SELECTED) - editor.edit(null, ClientModel.SHEETS, ClientModel.SHEETS_CURRENT, arg0.getItem(), null, - null); + if (arg0.getStateChange() == ItemEvent.SELECTED) { + editor.edit(null, ClientModel.SHEETS, ClientModel.SHEETS_CURRENT, arg0.getItem(), null, null); + HashSet targets = new HashSet<>(); + targets.add(ClientModel.MODE); + resetSelections(editor, targets); + } } } }; @@ -615,8 +622,9 @@ public class SpreadsheetModel { CellEditor editor = serverInterface.getAdapter(CellEditor.class); if(editor != null) { - if(arg0.getStateChange() == ItemEvent.SELECTED) + if(arg0.getStateChange() == ItemEvent.SELECTED) { editor.edit(null, ClientModel.SOURCES, ClientModel.SOURCES_CURRENT, arg0.getItem(), null, null); + } } } @@ -720,9 +728,9 @@ public class SpreadsheetModel { OperationMode currentMode = clientModel.getPropertyAt(ClientModel.MODE, ClientModel.MODE_CURRENT); String text; if (currentMode.equals(OperationMode.OPERATION)) - text = "Operation Mode"; + text = OPERATIONMODE; else - text = "Edit Mode"; + text = EDITMODE; operationMode = new JToggleButton(text); operationMode.addActionListener(new ActionListener() { @@ -992,6 +1000,13 @@ public class SpreadsheetModel { } + private void resetSelections(CellEditor editor, HashSet targets) { + if(targets.contains(ClientModel.MODE)) { + editor.edit(null, ClientModel.MODE, ClientModel.MODE_CURRENT, OperationMode.OPERATION, null, null); + operationMode.setText(OPERATIONMODE); + } + } + private boolean isRectangularSelection(SpreadsheetTable table) { int[] selectedColumns = table.getSelectedColumns(); int[] selectedRows = table.getSelectedRows(); @@ -1027,7 +1042,7 @@ public class SpreadsheetModel { private void editSelection(CellEditor editor, Transaction transaction, String property, Object value, Binding binding) { for(int col : table.getSelectedColumns()) { for(int row : table.getSelectedRows()) { - String location = SpreadsheetUtils.cellName(row, col); + String location = Spreadsheets.cellName(row, col); editor.edit(transaction, location, property, value, binding, null); } } @@ -1044,7 +1059,7 @@ public class SpreadsheetModel { // Transaction transaction = editor.startTransaction(); for(int col : selectedColumns) { for(int row : selectedRows) { - String location = SpreadsheetUtils.cellName(row, col); + String location = Spreadsheets.cellName(row, col); CellValue value = (CellValue)table.getValueAt(row, col); int align = value != null ? value.align : 0;