include "Simantics/DB" include "Simantics/Ontologies" include "Simantics/SCL" include "Simantics/UI" include "Document/All" include "File" effect SpreadsheetTransaction "spreadsheetTransaction" "org.simantics.spreadsheet.Transaction" importJava "org.simantics.spreadsheet.graph.ExternalRef" where data ExternalRef importJava "org.simantics.spreadsheet.common.TableCell" where data TableCell importJava "java.util.function.Consumer" where data Consumer importJava "org.simantics.spreadsheet.CellEditor" where data CellEditor startTransaction :: CellEditor -> OperationMode -> Transaction @JavaName "edit" editProperty_ :: CellEditor -> String -> String -> a -> Binding a -> Maybe Consumer -> () @JavaName "edit" editContent :: CellEditor -> String -> Variant -> Maybe Consumer -> () @inline editProperty :: Serializable a => CellEditor -> String -> String -> a -> Maybe Consumer -> () editProperty editor location property value consumer = editProperty_ editor location property value binding consumer importJava "org.simantics.spreadsheet.OperationMode" where data OperationMode OPERATION :: OperationMode EDIT_MODE :: OperationMode importJava "org.simantics.spreadsheet.Transaction" where data Transaction commit :: Transaction -> () importJava "org.simantics.spreadsheet.common.TreeTableCell" where data TreeTableCell @JavaName getData getTreeTableCellData :: TreeTableCell -> a createTreeTableCell :: String -> a -> Maybe b -> Integer -> Integer -> Integer -> Boolean -> TreeTableCell createTreeTableCell2 :: String -> a -> Maybe b -> a -> Integer -> Integer -> Boolean -> TreeTableCell @JavaName getText treeTableCellText :: TreeTableCell -> String @JavaName getFont treeTableCellFont :: TreeTableCell -> Maybe IFont @JavaName getRow treeTableCellRow :: TreeTableCell -> Integer @JavaName getColumn treeTableCellColumn :: TreeTableCell -> Integer importJava "org.simantics.spreadsheet.common.SpreadsheetCell" where data SpreadsheetCell importJava "org.simantics.spreadsheet.graph.SCL" where toVariant :: a -> Variant modelsSourceContribution :: Resource -> [Variable] modelsSourceContributionLabeler :: Variable -> String importJava "org.simantics.spreadsheet.graph.SpreadsheetGraphUtils" where @JavaName "fullSynchronization" fullSynchronizeSheet :: Variable -> Boolean evaluateAll :: Variable -> () saveInitialCondition :: Variable -> Resource -> String -> Resource findCell :: Variable -> String -> Maybe Variable invalidateAll :: Variable -> () extRefVariable :: Variable -> Variant extRefActiveVariable :: Variable -> Variant cellEditor :: Resource -> CellEditor syncExec :: CellEditor -> OperationMode -> ( a) -> a cellColumn :: Variable -> Integer importJava "org.simantics.spreadsheet.Spreadsheets" where cellName :: Integer -> Integer -> String importJava "org.simantics.spreadsheet.util.SpreadsheetUtils" where createSheet :: Resource -> String -> Resource queryCells :: a -> [TableCell] modifyCells1 :: [TableCell] -> (TableCell -> TableCell) -> [TableCell] modifyCells :: [TableCell] -> [(TableCell -> TableCell)] -> [TableCell] organizeCells :: Integer -> [String] -> [TableCell] -> [TableCell] applyFont :: IFont -> (TableCell -> Boolean) -> TableCell -> TableCell applyAlign :: Integer -> (TableCell -> Boolean) -> TableCell -> TableCell applyForeground :: IColor -> (TableCell -> Boolean) -> TableCell -> TableCell applyBackground :: IColor -> (TableCell -> Boolean) -> TableCell -> TableCell simpleFont :: String -> String -> Integer -> IFont rgbColor :: Integer -> Integer -> Integer -> IColor selectRow :: Integer -> TableCell -> Boolean selectColumn :: Integer -> TableCell -> Boolean setSCLLine :: Resource -> Integer -> String -> () sheetRun :: Resource -> Variable -> Variable @JavaName "sheetRun" bookRun :: Resource -> Variable -> Variable sheetRunDefault :: Resource -> Variable sheetRunDefault sheet = sheetRun sheet (resourceVariable sheet) importJava "org.simantics.spreadsheet.graph.SpreadsheetSessionManager" where removeSpreadsheetSession :: Variable -> () importJava "org.simantics.spreadsheet.graph.ExcelImport" where importBook :: Resource -> File -> () importSpreadsheetBookAction :: Resource -> () importSpreadsheetBookAction res = match fileDialog "foo" [("Excel file", "*.xls"), ("Excel File", "*.xlsx")] with Nothing -> () Just file -> importBook res file createSpreadsheetBookAction :: Resource -> () createSpreadsheetBookAction res = do syncWrite (\() -> createSpreadsheetBookDefault res) () createSpreadsheetSheetAction :: Resource -> () createSpreadsheetSheetAction res = do syncWrite (\() -> createSpreadsheetDefault res) () createSpreadsheetDefault :: Resource -> Resource createSpreadsheetDefault library = createSheet library $ findFreshEscapedName "Sheet" library createSpreadsheetBookDefault :: Resource -> Resource createSpreadsheetBookDefault library = createSpreadsheetBook library $ findFreshEscapedName "Book" library createRange :: Resource -> Resource -> String -> String -> Resource createRange library type_ name expression = do range = newResource () claim range L0.InstanceOf type_ claimRelatedValue range L0.HasName name createSCLValue range SHEET.ExpressionRange.cells SHEET.SCLValue expression claim range L0.PartOf library range createSpreadsheetBook :: Resource -> String -> Resource createSpreadsheetBook library name = do markUndoPoint () book = newResource () claim book L0.InstanceOf SHEET.Book claimRelatedValue book L0.HasName name claim book L0.PartOf library createSheet book "Sheet" addCommentMetadata ("Created Spreadsheet Book " + name) book