LabelDecorator.decorateLabel can return null
[simantics/platform.git] / bundles / org.simantics.modeling.ui / scl / Simantics / Testing / BrowseContext.scl
1 import "Simantics/Variables"
2 import "Map" as Map
3 include "Simantics/Testing/BuiltinKeys" as BuiltinKeys
4
5 importJava "org.simantics.browsing.ui.model.browsecontexts.BrowseContext" where
6     """
7     BrowseContext holds all contributions related to given set of browse contexts.
8     """
9     data BrowseContext
10     
11     @JavaName getChildren
12     """
13     Returns the possible children of the given NodeContext parameter.
14     """
15     browseContextChildren :: BrowseContext -> NodeContext -> <ReadGraph> Collection NodeContext
16     
17     @JavaName getParents
18     """
19     Returns the possible parents of the given NodeContext parameter.
20     """
21     browseContextParents:: BrowseContext -> NodeContext -> <ReadGraph> Collection NodeContext
22     
23     @JavaName getLabel
24     """
25     Finds labels for the given NodeContext parameter.
26     """
27     browseContextLabel :: BrowseContext -> NodeContext -> <ReadGraph> Map.T String String
28     
29     @JavaName getImage
30     """
31     Finds @link ImageDescriptors for the given NodeContext parameter.
32     """
33     browseContextImage :: BrowseContext -> NodeContext -> <ReadGraph> Map.T String ImageDescriptor
34     
35     @JavaName getCheckedState
36     """
37     Finds if the given NodeContext is checked or not.
38     """
39     browseContextCheckedState :: BrowseContext -> NodeContext -> <ReadGraph> CheckedState
40     
41     @JavaName getLabelDecorator
42     """
43     Finds LabelDecorator for the given NodeContext parameter.
44     """
45     browseContextLabelDecorator :: BrowseContext -> NodeContext -> <ReadGraph> LabelDecorator
46     
47     @JavaName getImageDecorator
48     """
49     Finds ImageDecorator for the given NodeContext parameter.
50     """
51     browseContextImageDecorator :: BrowseContext -> NodeContext -> <ReadGraph> ImageDecorator
52     
53     @JavaName getModifier
54     """
55     Finds Modifier for the given NodeContext parameter.
56     """
57     browseContextModifier :: BrowseContext -> NodeContext -> String -> <ReadGraph> Maybe Modifier
58     
59     @private
60     create :: [Resource] -> <ReadGraph> BrowseContext
61
62 importJava "org.simantics.browsing.ui.NodeContext" where
63     """
64     A context used to represent a single visible UI item. 
65     """
66     data NodeContext
67     
68     """
69     Finds value with the specified key or <code>null</code> if there was no value for the key
70     """
71     getConstant :: NodeContext -> BuiltinKeys.ConstantKey -> <Proc> a
72
73 importJava "org.eclipse.jface.resource.ImageDescriptor" where
74     data ImageDescriptor
75
76 importJava "org.simantics.browsing.ui.content.ImageDecorator" where
77     data ImageDecorator
78
79 importJava "org.eclipse.jface.resource.DeviceResourceDescriptor" where
80     data FontDescriptor
81     data ColorDescriptor
82
83 importJava "org.eclipse.jface.resource.FontDescriptor" where
84     @private
85     @JavaName createFrom
86     createFontDescriptorFrom :: String -> Integer -> Integer -> FontDescriptor
87
88 defaultFontDescriptor = createFontDescriptorFrom "Arial" 12 0 
89
90 importJava "org.simantics.browsing.ui.content.LabelDecorator" where
91     """
92     An interface for decorating aesthetic properties of an UI item, including the label text, font, background color and foreground color.
93     """
94     data LabelDecorator
95     
96     """
97     Decorates the given label with the name of the UI column which the label is for and  the index of this label within its parenting INodeContext.
98     Returns the decorated Label 
99     """
100     decorateLabel :: LabelDecorator -> String -> String -> Integer -> <Proc> Maybe String
101     decorateForeground :: LabelDecorator -> a -> String -> Integer -> <Proc> a
102     decorateBackground :: LabelDecorator -> a -> String -> Integer -> <Proc> a
103     decorateFont :: LabelDecorator -> Maybe a -> String -> Integer -> <Proc> Maybe a
104
105 importJava "org.simantics.browsing.ui.CheckedState" where
106     data CheckedState
107
108 importJava "org.simantics.browsing.ui.content.Labeler$Modifier" where
109     data Modifier
110     
111     getValue :: Modifier -> <Proc> String
112     isValid :: Modifier -> String -> <Proc> Maybe String
113     modify :: Modifier -> String -> <Proc> ()
114
115 importJava "org.simantics.browsing.ui.model.browsecontexts.BrowseContexts" where
116     toBrowseContextG :: Vector String -> <ReadGraph> BrowseContext
117     getNodeContextForResource :: Resource -> <Proc> NodeContext
118
119 """
120 Creates a new BrowseContext for the given Collection of Resources.
121 """
122 createBrowseContext :: [Resource] -> <ReadGraph> BrowseContext
123 createBrowseContext resource = do
124     create resource
125
126 importJava "org.simantics.browsing.ui.common.NodeContextBuilder" where
127     buildWithInput :: a -> <Proc> NodeContext
128
129 instanceOfTest :: Variable -> <ReadGraph> (Resource -> <ReadGraph> Boolean)
130 instanceOfTest self = do
131   typeResource = singleObject (represents $ parent self) MOD.InstanceOfTest.HasType
132   (\r -> isInstanceOf r typeResource)