001package org.vishia.gral.ifc; 002 003import java.io.File; 004import java.io.InputStream; 005import java.io.Writer; 006import java.util.List; 007import java.util.Map; 008import java.util.Set; 009 010import org.vishia.byteData.VariableContainer_ifc; 011import org.vishia.gral.base.GralButton; 012import org.vishia.gral.base.GralCurveView; 013import org.vishia.gral.base.GralGraphicTimeOrder; 014import org.vishia.gral.base.GralHtmlBox; 015import org.vishia.gral.base.GralLed; 016import org.vishia.gral.base.GralMenu; 017import org.vishia.gral.base.GralPos; 018import org.vishia.gral.base.GralTable; 019import org.vishia.gral.base.GralValueBar; 020import org.vishia.gral.base.GralWidgImpl_ifc; 021import org.vishia.gral.base.GralWidget; 022import org.vishia.gral.base.GralMng; 023import org.vishia.gral.base.GralPanelContent; 024import org.vishia.gral.base.GralWindow; 025import org.vishia.gral.base.GralTabbedPanel; 026import org.vishia.gral.base.GralPanelActivated_ifc; 027import org.vishia.gral.base.GralTable; 028import org.vishia.gral.base.GralTextBox; 029import org.vishia.gral.base.GralTextField; 030import org.vishia.gral.cfg.GralCfgBuilder; 031import org.vishia.gral.cfg.GralCfgData; 032//import org.vishia.gral.ifc.GuiShellMngIfc; 033import org.vishia.gral.widget.GralHorizontalSelector; 034import org.vishia.gral.widget.GralInfoBox; 035import org.vishia.util.KeyCode; 036import org.vishia.util.ReplaceAlias_ifc; 037 038 039 040/**This is a unique interface for the GUI-panel-manager to build its content. 041 * To work with the graphical application see {@link GralMng_ifc}. 042 * <br><br> 043 * <br><br> 044 * For the most 045 * simple applications, the capability of this interface and its given implementation 046 * for the platform may be sufficient, so the platform-specific widget isn't necessary to use. 047 * It may be better to enhance this interface and its implementation(s) if new features are need. 048 * But the definition of that enhancements should be done in a commonly form which is able to implement 049 * in any known Java GUI platform. 050 * <br><br> 051 * Generally, the widgets are able to address with an identification String to do something with it 052 * for symbolic access. 053 * <br><br> 054 * To build a GUI you must use the following order of calls: 055 * <ul> 056 * <li>Create a graphic manager which is typeof {@link GralMng} or this interface. 057 * For example create {@link org.vishia.gral.swt.SwtMng}. 058 * <li>Create a panel, for example call {@link #createGridPanel(GralColor, int, int, int, int)} 059 * and add the panel to the given 060 * <li>Before add, you can select any given panel by String-identifier, using {@link #selectPanel(String)}. 061 * <li>Before add, you have to determine the position and size using 062 * <ul><li>{@link #setPositionSize(int, int, int, int, char)} in grid units 063 * <li>{@link #setFinePositionSize(int, int, int, int, int, int, int, int, char)} 064 * <li>{@link #setNextPositionX()} 065 * </ul> 066 * <li>The call the <b>add method</b>: This methods create the graphic widget in the current selected panel. 067 * </ul> 068 * <br><br> 069 * <b>Concept of positioning</b>: see method {@link #setPosition(float, float, float, float, char, int)} 070 * and {@link GralWidget_ifc}. 071 * <br><br> 072 * <br><br> 073 * <b>Concept for widgets</b>: see {@link GralWidget} 074 * 075 * @author Hartmut Schorrig 076 * 077 */ 078public interface GralMngBuild_ifc 079{ 080 081 /**The version of this interface: 082 * <ul> 083 * <li>2016-09-01 Hartmut chg: instead extends {@link ReplaceAlias_ifc} now contains {@link #getReplacerAlias()}. 084 * It is an extra class for a ReplacerAlias given independent of the graphic. 085 * <li>2016-07-20 Hartmut chg: instead setToPanel now {@link #createImplWidget_Gthread()}. It is a better name. 086 * <li>2012-04-01 Hartmut new: {@link #addDataReplace(Map)}, {@link #replaceDataPathPrefix(String)}. 087 * using alias in the {@link GralWidget#setDataPath(String)}. The resolving of the alias is done 088 * only if the datapath is used. 089 * <li>2012-03-10 Hartmut chg: Rename this class to GralMngBuild_ifc 090 * <li>2012-03-09 Hartmut new: {@link #addCheckButton(String, String, String, String, GralColor, GralColor, GralColor)} 091 * <li>2012-02-11 Hartmut new: {@link #setContextMenu(GralWidget, GralMenu)}. 092 * <li>2011-11-16 Hartmut new: {@link #addText(String)} simple with standards. 093 * <li>2011-11-17 Hartmut chg: {@link #createWindow(String, String, int)} now not only exclusive or not 094 * but with some control bits {@link GralWindow#windExclusive} etc. 095 * <li>2011-06-18 Hartmut chg: createFileDialog() improved, 096 * new addFileSelectField(): A Field that comprises the possibility to open a file select dialog 097 * and that are a destination for drop or paste a file mime type from clipboard. 098 * <li>2011-05-01 Hartmut new: {@link #addTextBox(GralWidget, boolean, String, char)}: 099 * A Text box with more as one line. The TextField has only one line. 100 * <li>2011-05-01 Hartmut new: {@link #createCompositeBox()}. It is a box with its own PanelMng 101 * which is located in an area of another panel. (Composite) 102 * <li>2011-05-01 Hartmut new: {@link #remove(GralGridBuild_ifc)} and {@link #remove(GralWidget)} 103 * to remove widgets, for dynamic views. 104 * <li>2011-05-01 Hartmut new: {@link #createWindow(String, boolean)} instead createModalWindow(String). 105 * This method should be used for any sub-windows in the application. The window position is determined 106 * inside the current window with the known {@link #setPositionSize(int, int, int, int, char)} functionality. 107 * The {@link #createWindow(int, int, int, int, VariableContainer_ifc)} with absolute coordinates 108 * may be deprecated. (Is it necessary to create a window outside the own borders? ) 109 * <li>All other changes in 2010 110 * </ul> 111 * 112 * <b>Copyright/Copyleft</b>:<br> 113 * For this source the LGPL Lesser General Public License, 114 * published by the Free Software Foundation is valid. 115 * It means: 116 * <ol> 117 * <li> You can use this source without any restriction for any desired purpose. 118 * <li> You can redistribute copies of this source to everybody. 119 * <li> Every user of this source, also the user of redistribute copies 120 * with or without payment, must accept this license for further using. 121 * <li> But the LPGL is not appropriate for a whole software product, 122 * if this source is only a part of them. It means, the user 123 * must publish this part of source, 124 * but doesn't need to publish the whole source of the own product. 125 * <li> You can study and modify (improve) this source 126 * for own using or for redistribution, but you have to license the 127 * modified sources likewise under this LGPL Lesser General Public License. 128 * You mustn't delete this Copyright/Copyleft inscription in this source file. 129 * </ol> 130 * If you intent to use this source without publishing its usage, you can get 131 * a second license subscribing a special contract with the author. 132 * 133 * @author Hartmut Schorrig = hartmut.schorrig@vishia.de 134 */ 135 public static final int version = 20120303; 136 137 138 /** 139 * 140 */ 141 public static final int propZoomedPanel = 0x0001; 142 143 public static final int propGridZoomedPanel = 0x0002; 144 145 146 147 /**Sets the action for main keys. Main keys are used in an application independent of the focused widget. 148 * The {@link GralUserAction#userActionGui(int, GralWidget, Object...)} is invoked on any key down event, 149 * exclusive some graphic implementation specific keys. The user should return false in this method 150 * if the key is not used and should not be blocked for widget specific key listeners. 151 * @param userKeyAction The user action to process main keys. 152 * @return the last set user action. 153 */ 154 GralUserAction setMainKeyAction(GralUserAction userKeyAction); 155 156 ReplaceAlias_ifc getReplacerAlias(); 157 158 /**Returns the width (number of grid step horizontal) of the last element. 159 * @return Difference between current auto-position and last pos. 160 */ 161 //int getWidthLast(); 162 163 /**Registers a panel to place the widgets. The panel can be selected 164 * with its name calling the {@link #selectPanel(String)} -Routine 165 * <br>parameter panel: 166 * <ul><li>Swing: javax.swing.JPanel 167 * <li>SWT: org.eclipse.swt.widgets.Composite 168 * </ul> 169 * @param name Name of the panel. 170 * @param panel The panel. It should be from the correct type of the base-graphic-system. 171 * If it the instance is fault, a ClassCastException is thrown. 172 * 173 */ 174 public void registerPanel(GralPanelContent panel); 175 176 177 /**Adds a panel for tabs as child of the current panel. 178 * @param user If not null, then this user class will be notified when a tab is selected. 179 * The user should update showed values. 180 * @param properties use or of constants {@link #propZoomedPanel}, {@link #propGridZoomedPanel} 181 * @return The tab-container, there the tabs can be registered. 182 */ 183 GralTabbedPanel addTabbedPanel(String namePanel, GralPanelActivated_ifc user, int properties); 184 185 /**selects a registered panel for the next add-operations. 186 * see {@link #registerPanel(String, Object)}. 187 */ 188 void selectPanel(String sName); 189 190 /**Selects the given panel as current panel to build some content. */ 191 void selectPanel(GralPanelContent panel); 192 193 /**Selects the primary window as current panel to build some content. */ 194 void selectPrimaryWindow(); 195 196 197 /**Sets the position for the next widget to add in the container. 198 * @param xpos x-Position in x-Units, count from left of the box. 199 * @param ypos y-Position in y-Units, count from top of the box. It is the bottom line of the widget. 200 * It means ypos = 0 is not a proper value. To show a text in the first line, use ypos=2. 201 */ 202 //void setPosition(int ypos, int xpos); 203 204 205 206 /**Sets the position and size for the next widget to add in the container. 207 * @param line y-Position in y-Units, count from top of the box. 208 * It is either the top or bottom line of the widget, depending on height. 209 * If < 0, then the previous position is valid furthermore. 210 * @param column x-Position in x-Units, count from left of the box. 211 * If < 0, then the previous position is valid furthermore. 212 * @param heigth The height of the line. If <0, then the param line respectively the current line 213 * will be used as bottom line of the next widget, and (line-height) is the top line. 214 * If 0 then the last value of height is taken furthermore. 215 * @param length The number of columns. If <0, then the param column is the right column, 216 * and column-length is the left column. If 0 then the last value of length is not changed. 217 * @param direction direction for a next widget, use 'r', 'l', 'u', 'd' for right, left, up, down 218 * @deprecated. Use {@link #setPosition(float, float, float, float, char, int)}. 219 */ 220 public void setPositionSize(int line, int column, int height, int length, char direction); 221 222 223 /**Sets the position. 224 * 225 * 226 * @param framePos The given frame. 227 * @param line The line. Positive: from top, negative: from end. 228 * @param lineEndOrSize The position of end of widget. negative or 0: from end. 0: the end position of Panel. 229 * see {@link GralPos#same} etc. 230 * @param column 231 * @param columnEndOrSize 232 */ 233 public void setPosition(float line, float lineEndOrSize, float column, float columnEndOrSize 234 , int origin, char direction ); 235 236 237 /**Sets the position in relation to a given position. 238 * @param framePos The given frame. 239 * @param line The line 240 * @param lineEnd 241 * @param column 242 * @param columnEnd 243 * @deprecated. 244 */ 245 public void setPosition(GralPos framePos, float line, float lineEnd, float column, float columnEnd 246 , int origin, char direction); 247 248 249 public void setPosition(GralPos framePos, float line, float lineEnd, float column, float columnEnd 250 , int origin, char direction, float border); 251 252 253 /**Sets the position with fine position given as float value. Only one digit after the float point is regarded, 254 * see definition for the fine position as description of {@link GralPos}. 255 * @param line either position or combinded with {@link GralPos#refer} etc. 256 * @param lineEnd 257 * @param column 258 * @param columnEnd 259 * @param origin see {@link #setFinePosition(int, int, int, int, int, int, int, int, int, char, int, int, GralPos)} 260 * @param direction 261 * @param border 262 */ 263 public void setPosition(float line, float lineEnd, float column, float columnEnd 264 , int origin, char direction, float border); 265 266 267 268 /**Same as {@link #setPositionSize(int, int, int, int, char)}, but the positions can be in a fine division. 269 * @param y The line. 270 * @param yFrac Number between 0..9 for fine positioning in the grid step. 271 * @param yEnd 272 * @param yEndFrac Number between 0..9 for fine positioning in the grid step. 273 * @param x 274 * @param xFrac Number between 0..9 for fine positioning in the grid step. 275 * @param xEnd 276 * @param xEndFrac Number between 0..9 for fine positioning in the grid step. 277 * @param direction Direction of the next position if that is not given than or {@link GralPos#next} is given than. 278 * A value other then r, l, u, d let the direction unchanged from previous call. 279 * @param origin Origin of inner widgets or next widgets. Use: 280 * <pre> 281 * 1 4 7 282 * 2 5 8 283 * 3 6 9 284 * </pre> 285 * for the origin points. (origin-1) %3 is the horizontal origin, (origin-1 /3) is the vertical one. 286 * A value 0 let the origin unchanged from previous call. 287 */ 288 public void setFinePosition(int y, int yFrac, int yEnd, int yEndFrac 289 , int x, int xFrac, int xEnd, int xEndFrac 290 , int origin, char direction, int border, int borderFrac, GralPos frame); 291 292 /**Sets the next position if the position is used, but change the size. 293 * @param ySize 294 * @param ySizeFrac 295 * @param xSize 296 * @param xSizeFrac 297 */ 298 public void setSize(int ySize, int ySizeFrac, int xSize, int xSizeFrac); 299 300 301 302 /**Gets the current position in the panel to store anywhere other. Usual the position is stored in the widget itself. 303 * This operation returns an independent instance of GralGridPos. 304 * Note that the {@link GralMng#pos} is reused there. Therefore the implementation of the method 305 * returns a cloned instance. 306 * @return An independent instance with current data of {@link GralMng#pos}. 307 * @deprecated see {@link GralWidget.ImplAccess}. 308 */ 309 @Deprecated 310 GralPos getPositionInPanel(); 311 312 313 314 /**Adds a button 315 * @param sButtonText text in the button 316 * @param height in grid-units 317 * @param width in grid-unigs 318 * @param sCmd The command string will be transfered to the action-method 319 * @param sUserAction The user action shoult be registered before 320 * calling {@link #registerUserAction(String, GralUserAction)} 321 * @param sName 322 * @return 323 */ 324 //Object addButton(String sButtonText, int height, int width, String sCmd, String sUserAction, String sName); 325 public GralButton addButton( 326 String sName 327 , GralUserAction action 328 , String sCmd 329 //, String sShowMethod 330 , String sDataPath 331 , String sButtonText 332 ); 333 334 335 /**Adds a button 336 * @param sButtonText text in the button 337 * @param height in grid-units 338 * @param width in grid-unigs 339 * @param sCmd The command string will be transfered to the action-method 340 * @param sUserAction The user action shoult be registered before 341 * calling {@link #registerUserAction(String, GralUserAction)} 342 * @param sName 343 * @return 344 */ 345 //Object addButton(String sButtonText, int height, int width, String sCmd, String sUserAction, String sName); 346 public GralButton addButton( 347 String sName 348 , GralUserAction action 349 , String sButtonText 350 ); 351 352 353 //public void add(GralHorizontalSelector<?> sel); 354 355 356 /**Adds a button which saves its state, pressed or non-pressed. 357 * 358 * @param sName 359 * @param action 360 * @param sCmd 361 * @param sShowMethod 362 * @param sDataPath 363 * @param sButtonText 364 * @return 365 */ 366 public GralButton addSwitchButton( 367 String sName 368 , GralUserAction action 369 , String sCmd 370 //, String sShowMethod 371 , String sDataPath 372 , String sButtonText 373 , String color0 374 , String color1 375 ); 376 377 378 379 /**Adds a button which is switching on or off. The state is shown with 2 colors and 2 different texts 380 * inside the button. The state is able to retrieve calling {@link GralButton#isOn()} 381 * or {@link GralButton#getValue()}. 382 * @param sName 383 * @param sButtonText0 384 * @param sButtonText1 385 * @param color0 386 * @param color1 387 * @return 388 */ 389 public GralButton addSwitchButton( 390 String sName 391 , String sButtonTextOff 392 , String sButtonTextOn 393 , GralColor colorOff 394 , GralColor colorOn 395 ); 396 397 398 399 /**Adds a button which is switching on or off. The state is shown with 2 colors and 2 different texts 400 * inside the button. The state is able to retrieve calling {@link GralButton#isOn()} 401 * or {@link GralButton#getValue()}. 402 * @param sName 403 * @param sButtonText0 404 * @param sButtonText1 405 * @param color0 406 * @param color1 407 * @return 408 */ 409 public GralButton addCheckButton( 410 String sName 411 , String sButtonTextOn 412 , String sButtonTextOff 413 , String sButtonTextDisabled 414 , GralColor colorOn 415 , GralColor colorOff 416 , GralColor colorDisabled 417 ); 418 419 420 421 422 /**Adds a Led (round) 423 * @param sName 424 * @return 425 */ 426 //Object addButton(String sButtonText, int height, int width, String sCmd, String sUserAction, String sName); 427 GralLed addLed( 428 String sName 429 //, String sShowMethod 430 , String sDataPath 431 ); 432 433 GralValueBar addValueBar( 434 String sName 435 //, String sShowMethod 436 , String sDataPath 437 ); 438 439 440 GralWidget addSlider( 441 String sName 442 , GralUserAction action 443 , String sShowMethod 444 , String sDataPath 445 ); 446 447 448 /**Adds a table, which is able to scroll. 449 * A user action on the GUI with the table invokes the {@link GralWidget#setActionChange(GralUserAction)} 450 * with 451 * <ul> 452 * <li> with given command "table-key". 453 * <li>values[0] is the selected line referenced with {@link GralTableLine_ifc} 454 * <li>values[1] is the key code described in {@link KeyCode} 455 * </ul> 456 * If the method isn't given or returns false, the central key action given in {@link GralMng#getRegisteredUserAction(String)} 457 * for "keyAction" is tried to get and then invoked with cmd = "key" and the key code in values[0]. 458 * This central keyAction may be used for application centralized keys without association to the table itself. 459 * 460 * @param sName register name, used for {@link GuiPanelMngWorkingIfc#insertInfo(String, int, String).} 461 * @param height The height in grid units for the appearance 462 * @param columnWidths Array with width of the columns. 463 * Each column has a fix default width per construction. 464 * It may or may not a fix widht, it may able to change by mouse actions, 465 * adequate to the possibilities of the used graphic base system. 466 * @return 467 * @deprecated Create an instance of {@link GralTable} and call {@link GralTable#setToPanel(GralMngBuild_ifc)} 468 */ 469 @Deprecated 470 GralTable addTable(String sName, int height, int[] columnWidths); 471 472 //void add(GralTable<?> table); 473 474 475 476 /**This routine is called from {@link GralWidget#setToPanel(GralMngBuild_ifc)}. 477 * It is not intent to call from the application immediately. Use {@link GralWidget#setToPanel(GralMngBuild_ifc)} instead. 478 * The implementation of this routine checks the type of the widget and invokes the proper routine 479 * for the implementation graphic in the implementation level of the {@link GralMng}. 480 * @param widgg The widget should be initialized already. 481 */ 482 void createImplWidget_Gthread(GralWidget widgg); 483 484 /**Adds a text to the current panel at given position with standard colors, left origin. 485 * The size of text is calculated using the height of positioning values. 486 * @param text 487 */ 488 GralWidget addText(String sText); 489 490 /**Adds a simple text at the current position. 491 * 492 * @param sText The text 493 * @param size size, 'A' is small ...'E' is large. 494 * @param color The color as RGB-value in 3 Byte. 0xffffff is white, 0xff0000 is red. 495 * @return 496 * @deprecated 497 */ 498 @Deprecated 499 GralWidget addText(String sText, char size, int color); 500 501 502 /**Adds a simple text at the current position. 503 * @param sText 504 * @param origin Origin, use char 1..9 for 1 top-left, 2 top-middle, ... 5 middle, 9 bottom-right. 505 * @param textColor 506 * @param BackColor 507 * @return 508 */ 509 GralWidget addText(String sText, int origin, GralColor textColor, GralColor BackColor); 510 511 Object addImage(String sName, InputStream imageStream, int height, int width, String sCmd); 512 513 514 /**Adds a line. 515 * <br><br>To adding a line is only possible if the current panel is of type 516 * {@link SwtCanvasStorePanel}. This class stores the line coordinates and conditions 517 * and draws it as background if drawing is invoked. 518 * 519 * @param colorValue The value for color, 0xffffff is white, 0xff0000 is red. 520 * @param xa start of line relative to current position in grid units. 521 * The start is relative to the given position! Not absolute in window! 522 * @param ya start of line relative to current position in grid units. 523 * @param xe end of line relative to current position in grid units. 524 * @param ye end of line relative to current position in grid units. 525 * @deprecated it is the old form before a {@link org.vishia.gral.widget.GralPlotArea} was created. Use that. 526 */ 527 @Deprecated void addLine(int colorValue, float xa, float ya, float xe, float ye); 528 529 530 /**Adds a line. 531 * <br><br>To adding a line is only possible if the current panel is of type 532 * {@link SwtCanvasStorePanel}. This class stores the line coordinates and conditions 533 * and draws it as background if drawing is invoked. 534 * 535 * @param color 536 * @param points 537 */ 538 void addLine(GralColor color, List<GralPoint> points); 539 540 541 542 543 544 /** Adds a field for editing or showing a text. This text can be prepared especially as number value too. 545 * The field has one line. The number of chars are not limited. 546 * <br><br> 547 * The current content of the edit field is able to get any time calling {@link GralPanelMngWorking_ifc#getValue(String)} 548 * with the given registering name. 549 * <br><br> 550 * To force a set of content or an action while getting focus of this field the method {@link #addActionFocused(String, GralUserAction, String)} 551 * can be called after invoking this method (any time, able to change). The {@link GralUserAction#userActionGui(String, String, GralWidget, Map)} 552 * is called in the GUI-thread before the field gets the focus. 553 * <br><br> 554 * To force a check of content or an action while finish editing the method {@link #addActionFocusRelease(String, GralUserAction, String)} 555 * can be called after invoking this method (any time, able to change). The adequate userActionGui is called after editing the field. 556 * <br><br> 557 * If the {@link GralWidget#action} refers an instance of type {@link GralUserAction}, than it is the action on finish editing. 558 * 559 * @param sName The registering name 560 * @param widgetInfo The informations about the textfield. 561 * @param editable true than edit-able, false to show content 562 * @param prompt If not null, than a description label is shown 563 * @param promptStylePosition Position and size of description label: 564 * upper case letter: normal font, lower case letter: small font 565 * 'l' left, 't' top (above field) 566 * @return 567 * @deprecated 568 */ 569 //Object addTextField(GralWidget widgetInfo, boolean editable, String prompt, char promptStylePosition); 570 571 /**Adds a text field at the current position. 572 * @param name The registering name to get the value from outside or set the content. 573 * @param editable true then an input field, false only for show 574 * @param prompt If not null, then this prompt text is shown above, left, rigth 575 * @param promptStylePosition Position and size of description label: 576 * upper case letter: normal font, lower case letter: small font 577 * 'l' left, 't' top (above field) 578 * @return The WidgetDescriptor. An action, tooltip, color etc. can be set there later. 579 */ 580 GralTextField addTextField(String name, boolean editable, String prompt, String promptStylePosition); 581 582 /** Adds a box for editing or showing a text. 583 * <br><br> 584 * The current content of the edit field is able to get anytime calling {@link GralMng_ifc#getValue(String)} 585 * with the given registering name. 586 * <br><br> 587 * To force a set of content or an action while getting focus of this field the method {@link #addActionFocused(String, GralUserAction, String)} 588 * can be called after invoking this method (any time, able to change). The {@link GralUserAction#userActionGui(String, String, GralWidget, Map)} 589 * is called in the GUI-thread before the field gets the focus. 590 * <br><br> 591 * To force a check of content or an action while finish editing the method {@link #addActionFocusRelease(String, GralUserAction, String)} 592 * can be called after invoking this method (any time, able to change). The adequate userActionGui is called after editing the field. 593 * <br><br> 594 * If the {@link GralWidget#action} refers an instance of type {@link GralUserAction}, than it is the action on finish editing. 595 * 596 * @param sName The registering name 597 * @param widgetInfo The informations about the textfield. 598 * @param editable true than edit-able, false to show content 599 * @param prompt If not null, than a description label is shown 600 * @param promptStylePosition Position and size of description label: 601 * upper case letter: normal font, lower case letter: small font 602 * 'l' left, 't' top (above field) 603 * @return 604 */ 605 //GralTextBox_ifc 606 GralTextBox addTextBox(String name,/*GralWidget widgetInfo, */boolean editable, String prompt, char promptStylePosition); 607 608 /** Adds a box which presents html content. 609 * 610 * @param sName The registering name 611 * @return The instance arranged in the current panel at current position of the GralWidgetMng 612 */ 613 GralHtmlBox addHtmlBox(String name); 614 615 /**Adds a curve view for displaying values with ordinary x-coordinate. 616 * The scaling of the curve view is set to -100..100 per default. 617 * @param sName Its registered name 618 * @param dyGrid height in grid-units 619 * @param dxGrid width in grid-units 620 * @param nrofXvalues depth of the buffer for x-values. It should be 6..20 times of dx. 621 * @param nrofTracks number of curves (tracks). 622 * @return The Canvas Object. 623 */ 624 GralCurveView addCurveViewY(String sName, int nrofXvalues, GralCurveView.CommonCurve common); 625 626 /**Adds a special text field to select a file. On the right side a small button [<] is arranged 627 * to open the standard file select dialog. 628 * The text field is a receiver of file objects for drag % drop or paste the clipboard. 629 * @param name Name of the widget 630 * @param listRecentFiles maybe null, a list which stores and offers selected files. 631 * @param defaultDir The start directory on open the dialog. 632 * @param startDirMask The start dir and selection mask. Both are separated with a ':' character 633 * in this string. See {@link GralFileDialog_ifc}. 634 * If the last or only one char is '/' then a directory should be selected. 635 * For example "D:/MyDir:*.txt" shows only .txt-files to select in the dialog starting from d:/MyDir. 636 * @param prompt Prompt for the text field. 637 * @param promptStylePosition 638 * @return 639 */ 640 GralTextField addFileSelectField(String name, List<String> listRecentFiles, String startDirMask, String prompt, String promptStylePosition); 641 642 643 /**Adds a panel that is not bound yet. 644 * @param panel 645 */ 646 //void addPanel(GralPanelContent panel); 647 648 /**Adds the given Focus action to the named widget. 649 * @param sName The name of the widget. It should be registered calling any add... method. 650 * @param action 651 * @param sCmdEnter 652 * @param sCmdRelease 653 * @return 654 */ 655 GralWidget addFocusAction(String sName, GralUserAction action, String sCmdEnter, String sCmdRelease); 656 657 /**Adds the given Focus action to the known widget. 658 * @param widgetInfo 659 * @param action 660 * @param sCmdEnter 661 * @param sCmdRelease 662 */ 663 void addFocusAction(GralWidget widgetInfo, GralUserAction action, String sCmdEnter, String sCmdRelease); 664 665 666 /**Register all widgets, which are created in its own classes, not add here. 667 * The widgets are stored in the index of names. 668 * @param widgd 669 */ 670 void registerWidget(GralWidget widgd); 671 672 /**Sets the values for a line 673 * @param sName The registered name 674 * @param yNull array of values for all tracks in percent from 0..100.0, where its 0-line is shown. 675 * @param yOffset This value will be subtract from the input values before scale. 676 * It is the 0-line-reference of the input values. 677 * @param yScale This value is that value, which is shown in a 10%-difference in the output window. 678 */ 679 //void setLineCurveView(String sNameView, int trackNr, String sNameLine, String sVariable, int colorValue, int style, int y0Line, float yScale, float yOffset); 680 681 682 /**Sets the appearance of the graphic respectively color and grid. 683 * @param sName The registered name 684 * @param backgroundColor The color of the background 685 * @param colorLines Array of color values for the lines. Any value should be given 686 * as red-green-blue value in 24 bit. Additionally 687 * <ul> 688 * <li>bit24,25, is the thickness of the line. 689 * </ul> 690 * @param grid character to determine how the grid is shown. '0' no grid, 'a'..'f' weak to strong. 691 * 692 */ 693 //void setColorGridCurveViewY(String sName, int backgroundColor, int[] colorLines, char grid); 694 695 /**Gets the value to the named color. It is a method of the graphic. 696 * @param sName supported: red, green, blue, yellow 697 * @return 3 bytes intensity: bit23..16 blue, bit15..8: green, bit 7..0 red. 698 */ 699 int getColorValue(String sName); 700 701 702 /**Gets the named color. 703 * @param sName supported: red, green, blue, yellow 704 */ 705 GralColor getColor(String sName); 706 707 708 /**Forces a newly paint of the GUI-container. 709 * This method should only be called in the graphic thread (SWT).*/ 710 void repaint(); 711 712 713 /**Forces a newly paint of the current panel. 714 * This method should only be called in the graphic thread. It should be used after changing content. */ 715 void repaintCurrentPanel(); 716 717 /**Registered any user action. A registered user action is used especially for a script build GUI. 718 * Action can be given by this register name. 719 * <br><br> 720 * The registering of user actions should be done at startup of the application, before the 721 * {@link GralCfgBuilder#buildGui(org.vishia.msgDispatch.LogMessage, int)} is invoked. 722 * The user actions can be called in any specialized context. 723 * <br><br> 724 * @param name Name of the action 725 * @param action what to do. 726 */ 727 void registerUserAction(String name, GralUserAction action); 728 729 GralUserAction getRegisteredUserAction(String name); 730 731 732 /**Returns a Set of all fields, which are created to show. 733 * @return the set, never null, possible an empty set. 734 */ 735 public Set< Map.Entry <String, GralWidget>> getShowFields(); 736 737 738 739 /**Creates a box inside the current panel to hold some widgets. 740 * 741 * @return 742 * @since 2010-05-01 743 */ 744 GralPanelContent createCompositeBox(String name); 745 746 747 748 /**Creates an independent grid panel which is managed by this. 749 * The panel can be associated to any graphic frame. 750 * @param namePanel 751 * @param backGround 752 * @param xG 753 * @param yG 754 * @param xS 755 * @param yS 756 * @return 757 */ 758 GralPanelContent createGridPanel(String namePanel, GralColor backGround, int xG, int yG, int xS, int yS); 759 760 761 /**Creates an empty context menu. 762 * @return 763 */ 764 //GralMenu createContextMenu(String name, GralWidget widg); 765 766 /**Removes a composite box from the graphic representation. 767 * @param compositeBox 768 * @return true if removed. 769 */ 770 boolean remove(GralPanelContent compositeBox); 771 772 boolean remove(GralWidget widget); 773 774 /**Creates a new window additional to a given window with Panel Manager. 775 * @param left 776 * @param top 777 * @param width 778 * @param height 779 * @param variableContainer A Container for variables 780 * @return 781 * @deprecated 782 */ 783 //GuiShellMngBuildIfc createWindow(int left, int top, int width, int height, VariableContainer_ifc variableContainer); 784 785 /**Creates a Window for a modal or non modal dialog. The window is described by the returned interface. 786 * It can be filled with elements. The dialog is able to show and hide calling 787 * {@link GralWindow_ifc#setWindowVisible(boolean)} or 788 * {@link GralMng_ifc#setWindowsVisible(GralWindow_ifc, GralPos)}. 789 * The position and size of the window is set with the adequate strategy like all other widget: 790 * using {@link #setPositionSize(int, int, int, int, char)}. 791 * @param title Title of the window, may be null, then without title bar. 792 * @param windProps Or of the static variables {@link GralWindow#windExclusive} etc. 793 * @return 794 * @deprecated use {@link GralWindow#GralWindow(String, String, String, int)} and then {@link GralWidget#createImplWidget_Gthread()} 795 * with this window. 796 */ 797 @Deprecated 798 GralWindow createWindow(String name, String title, int windProps); 799 800 801 GralInfoBox createTextInfoBox(String name, String title); 802 803 GralInfoBox createHtmlInfoBox(String posString, String name, String title, boolean onTop); 804 805 /**Sets the builder for content configuration. 806 * @param cfgBuilder 807 */ 808 void buildCfg(GralCfgData data, File fileCfg); 809 810 /**Sets or resets the design mode. The design mode allows to change the content. 811 * @param mode 812 */ 813 void setDesignMode(boolean mode); 814 815 /**Saves the given configuration. 816 * @param dest 817 * @return 818 */ 819 String saveCfg(Writer dest); 820 821 /**Creates a file or directory dialog. The dialog can be activated (showed) any time. 822 * The dialog is showed in a own window, maybe modal or not. 823 * @return Interface to deal with the dialog. 824 */ 825 GralFileDialog_ifc createFileDialog(); 826 827 //GuiShellMngIfc getShellMngIfc(); 828 829}