001: // @@
002: // @@
003: /*
004: * Wi.Ser Framework
005: *
006: * Version: 1.8.1, 20-September-2007
007: * Copyright (C) 2005 Dirk von der Weiden <dvdw@imail.de>
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library located in LGPL.txt in the
021: * license directory; if not, write to the
022: * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
023: * Boston, MA 02111-1307, USA.
024: *
025: * If this agreement does not cover your requirements, please contact us
026: * via email to get detailed information about the commercial license
027: * or our service offerings!
028: *
029: */
030: // @@
031: package de.ug2t.unifiedGui.interfaces;
032:
033: import java.util.*;
034:
035: import de.ug2t.channel.ho.session.*;
036: import de.ug2t.kernel.*;
037: import de.ug2t.process.*;
038: import de.ug2t.unifiedGui.*;
039: import de.ug2t.workflow.*;
040:
041: /**
042: * @author Dirk
043: *
044: * date: 24.11.2003 project: WiSer-Framework
045: *
046: * <p>
047: * IUnApplication is the common interface to application-objects for all
048: * supported channels. The current release supports Java Swing and MARKUP based
049: * Applications and corresponding clients
050: * </p>
051: */
052: public interface IUnApplication extends IUnContainer, IUnPanel {
053: // Dispatch
054: public static final String MY_APPL = "MY_APPL";
055: public static final String APPL_TYPE_SWING = "HALFOBJECT";
056: public static final String APPL_TYPE_HTML = "MARKUP";
057: public static final String MY_APPL_TYPE = "MY_APPL_TYPE";
058: public static final String MY_LANGUAGE = "MY_LANGUAGE";
059: public static final String MY_LANGUAGE_CODE = "MY_LANGUAGE_CODE";
060: public static final String MY_META_KEY = "MY_META_KEY";
061: public static final String MY_CLIENT_TYPE = "MY_CLIENT_TYPE";
062:
063: public static final String APPL_RESUME = "APPL_RESUME";
064: public static final String APPL_CLOSED = "CLOSED";
065: public static final String APPL_CLOSING = "CLOSING";
066: public static final String APPL_ACTIVATED = "ACTIVATED";
067: public static final String APPL_ICONIFIED = "ICONIFIED";
068: public static final String APPL_DEICONIFIED = "DEICONIFIED";
069: public static final String APPL_DEACTIVATED = "DEACTIVATED";
070: public static final String APPL_OPENED = "OPENED";
071: public static final String APPL_RESIZED = "RESIZED";
072: public static final String APPL_MOVED = "MOVED";
073:
074: /**
075: * <p>
076: * Sets whether events bubble up the component tree or not. If bubbling is
077: * disabled the order of the events is random!
078: * </p>
079: * <p>
080: *
081: * </p>
082: * <p>
083: *
084: * @param xBubble
085: * true or false
086: * </p>
087: */
088: public void pcmf_setEventBubbling(boolean xBubble);
089:
090: /**
091: * <p>
092: * Do events bubble up the component tree (default true). If false, indirect
093: * events will not work! If bubbling is disabled the order of the events is
094: * random!
095: * </p>
096: * <p>
097: *
098: * @return true indicate event bubbling
099: * </p>
100: * <p>
101: * </p>
102: */
103: public boolean pcmf_isEventBubbling();
104:
105: /**
106: * <p>
107: * Adds a listener to a widget placed at the specified path on the specified
108: * page
109: * </p>
110: * <p>
111: *
112: * @return the widget which to which the listener was added
113: * </p>
114: * <p>
115: * @param xPage
116: * page where the widget is placed
117: * @param xPath
118: * path of the widget within the page
119: * @param xListener
120: * listener-object to add
121: * </p>
122: */
123: public KeTreeElement pcmf_addListener(String xPage, String xPath,
124: IUnGuiEventListener xListener);
125:
126: /**
127: * <p>
128: * Adds a listener to a widget placed at the specified path in the application
129: * </p>
130: * <p>
131: *
132: * @return the widget which to which the listener was added
133: * </p>
134: * <p>
135: * @param xPath
136: * path of the widget within the page
137: * @param xListener
138: * listener-object to add
139: * </p>
140: */
141: public KeTreeElement pcmf_addListener(String xPath,
142: IUnGuiEventListener xListener);
143:
144: /**
145: * <p>
146: * Sets the statemachine which rules the workflow of the application. This
147: * feature is currently not completely supported!
148: * </p>
149: * <p>
150: *
151: * </p>
152: * <p>
153: *
154: * @param xState
155: * workflow-statemachine
156: * </p>
157: */
158: public void pcmf_setState(WfState xState);
159:
160: /**
161: * <p>
162: * Sets the state of the workflow-statemachine. This feature is currently not
163: * completely supported!
164: * </p>
165: * <p>
166: *
167: * @return the previous state of the statemachine
168: * </p>
169: * <p>
170: * </p>
171: */
172: public WfState pcmf_getState();
173:
174: /**
175: * <p>
176: * Gets the hostname of the server which hosts the application in its
177: * String-representatation
178: * </p>
179: * <p>
180: *
181: * @return current hostname
182: * </p>
183: * <p>
184: * </p>
185: */
186: public String pcmf_getHostName();
187:
188: /**
189: * <p>
190: * Gets the URL of the application
191: * </p>
192: * <p>
193: *
194: * @return URL
195: * </p>
196: * <p>
197: * </p>
198: */
199: public String pcmf_getRootUrl();
200:
201: /**
202: * <p>
203: * Sets the URL of the application. Mainly for internal use!
204: * </p>
205: * <p>
206: *
207: * @param xUrl
208: * URL
209: * <p>
210: * </p>
211: */
212: public void pcmf_setRootUrl(String xUrl);
213:
214: /**
215: * <p>
216: * Gets the communication-port of the application
217: * </p>
218: * <p>
219: *
220: * @return tcp/ip - port
221: * </p>
222: * <p>
223: * </p>
224: */
225: public int pcmf_getPort();
226:
227: /**
228: * <p>
229: * Adds a page to the application. After that the page can be set as the
230: * active-one by the given name. If there is already a page of this name it is
231: * removed
232: * </p>
233: * <p>
234: *
235: * @return null if there was no page of this name available in the application
236: * before
237: * @return the page which had this name before
238: * </p>
239: * <p>
240: * @param xName
241: * name of the page
242: * @param xPage
243: * page-object to insert
244: * </p>
245: */
246: public IUnPage pcmf_addPage(String xName, IUnPage xPage);
247:
248: /**
249: * <p>
250: * Sets the specified page active. That means that this page will be rendered
251: * when the next GUI-refresh appears
252: * </p>
253: * <p>
254: *
255: * @return null if the requested page-object was not found
256: * @return the active page-object
257: * </p>
258: * <p>
259: * @param xName
260: * requested page-object
261: * </p>
262: */
263: public UnComponent pcmf_setActive(String xName);
264:
265: /**
266: * <p>
267: * gets the current active page-object
268: * </p>
269: * <p>
270: *
271: * @return active page-object
272: * </p>
273: * <p>
274: * </p>
275: */
276: public UnComponent pcmf_getActive();
277:
278: /**
279: * <p>
280: * Executes a client-request
281: * </p>
282: * <p>
283: *
284: * </p>
285: * <p>
286: *
287: * @param xReq
288: * channel specific request-object
289: * @param xResp
290: * channel specific response-object
291: * @param xRobust
292: * true indicates the all exceptions will be catched within the
293: * function. false indicates that all exceptions will be propagated
294: * to the calling api-level
295: * </p>
296: */
297: public void pcmf_work(Object xReq, Object xResp, boolean xRobust)
298: throws Exception;
299:
300: /**
301: * <p>
302: * renders the current page
303: * </p>
304: * <p>
305: *
306: * @return the channel specific render-information. In case of MARKUP the
307: * corresponding String is returned
308: * </p>
309: * <p>
310: * </p>
311: */
312: public Object pcmf_execView();
313:
314: /**
315: * <p>
316: * Gets the application-context, which means that all objects which are
317: * associated to the application are collected within an instance of a
318: * HashMap.
319: * </p>
320: * <p>
321: *
322: * @return map with all associated objects. New objects may be inserted here
323: * </p>
324: * <p>
325: * </p>
326: */
327: public HashMap pcmf_getContext();
328:
329: /**
330: * <p>
331: * Gets the current user-name, which is signed on
332: * </p>
333: * <p>
334: *
335: * @return user-name
336: * </p>
337: * <p>
338: * </p>
339: */
340: public String pcmf_getUser();
341:
342: /**
343: * <p>
344: * Sets the current user-name.
345: * </p>
346: * <p>
347: *
348: * @return the previous user-name
349: * </p>
350: * <p>
351: * @param xUser
352: * new user-name
353: * </p>
354: */
355: public String pcmf_setUser(String xUser);
356:
357: /**
358: * <p>
359: * Gets the role of the current user
360: * </p>
361: * <p>
362: *
363: * @return role-name
364: * </p>
365: * <p>
366: * </p>
367: */
368: public String pcmf_getRole();
369:
370: /**
371: * <p>
372: * Sets the role of the current user
373: * </p>
374: * <p>
375: *
376: * @return previous role-name
377: * </p>
378: * <p>
379: * @param xRole
380: * role-name
381: * </p>
382: */
383: public String pcmf_setRole(String xRole);
384:
385: /**
386: * <p>
387: * Gets the associated gui-object which implements all common methods
388: * </p>
389: * <p>
390: *
391: * @return gui-object
392: * </p>
393: * <p>
394: * </p>
395: */
396: public UnComponent pcmf_getUnComponent();
397:
398: // @@
399:
400: /**
401: * <p>
402: * Is the application-instance-client in mdi-mode or not.
403: * </p>
404: * <p>
405: *
406: * @return true indicate mdi-mode false indicates sdi-mode
407: * </p>
408: * <p>
409: * </p>
410: */
411: public boolean pcmf_isMDI();
412:
413: /**
414: * <p>
415: * Sets the icon which is displayed in the clients main-window. The icon is
416: * specified by its registred name
417: * </p>
418: * <p>
419: *
420: * @return a Type with
421: * </p>
422: * <p>
423: * @param xName
424: * registred icon-object name
425: * </p>
426: */
427: public void pcmf_setIcon(String xName);
428:
429: /**
430: * <p>
431: * Set the Init-function of the application, this function is executed before
432: * any other operation of the application has been performed
433: * </p>
434: * <p>
435: *
436: * </p>
437: * <p>
438: *
439: * @param xInit
440: * IScExecutable object
441: * </p>
442: */
443: public void pcmf_setInitFct(IKeExecutable xInit);
444:
445: /**
446: * <p>
447: * Sets the main-menu of the application
448: * </p>
449: * <p>
450: *
451: * </p>
452: * <p>
453: *
454: * @param xMainMenu
455: * interface to a menu-object
456: * </p>
457: */
458: public void pcmf_setMainMenu(IUnMenu xMainMenu);
459:
460: /**
461: * <p>
462: * Gets the current main-menu of the application
463: * </p>
464: * <p>
465: *
466: * @return interface to the current menu-object
467: * </p>
468: * <p>
469: * </p>
470: */
471: public IUnMenu pcmf_getMainMenu();
472:
473: /**
474: * <p>
475: * Sets the gui-object-factory which is associated to this
476: * application-instance. There is no need to use this function, the framework
477: * sets the correct value.
478: * </p>
479: * <p>
480: *
481: * </p>
482: * <p>
483: *
484: * @param xFact
485: * factory-object
486: * </p>
487: */
488: public void pcmf_setComponentFactory(UnComponentFactory xFact);
489:
490: /**
491: * <p>
492: * Gets the gui-object-factory which is associated to this
493: * application-instance
494: * </p>
495: * <p>
496: *
497: * @return factory-object
498: * </p>
499: * <p>
500: * </p>
501: */
502: public UnComponentFactory pcmf_getComponentFactory();
503:
504: /**
505: * <p>
506: * Gets the communication-session which handles all client-server
507: * communication for this application instance
508: * </p>
509: * <p>
510: *
511: * @return session-object
512: * </p>
513: * <p>
514: * </p>
515: */
516: public IHoSession pcmf_getSession();
517:
518: /**
519: * <p>
520: * Closes the application on client- and server-side before the system-cleanup
521: * is performed
522: * </p>
523: * <p>
524: *
525: * @return a Type with
526: * </p>
527: * <p>
528: * </p>
529: */
530: public void pcmf_close();
531:
532: /**
533: * <p>
534: * Returns the type of the application
535: * </p>
536: * <p>
537: *
538: * @return application type
539: * </p>
540: * <p>
541: * </p>
542: */
543: public int pcmf_getApplType();
544:
545: /**
546: * <p>
547: * Sets the size of the main application-window
548: * </p>
549: * <p>
550: *
551: * </p>
552: * <p>
553: *
554: * @param xWi
555: * width
556: * @param xHi
557: * height
558: * </p>
559: */
560: public void pcmf_setApplWinSize(int xWi, int xHi);
561:
562: /**
563: * <p>
564: * Start a session transaction, for example to do several changes of remote
565: * widgets
566: * </p>
567: * <p>
568: *
569: * </p>
570: * <p>
571: * </p>
572: */
573: public void pcmf_beginSessionTR();
574:
575: /**
576: * <p>
577: * Commit a session transaction
578: * </p>
579: * <p>
580: *
581: * </p>
582: * <p>
583: * </p>
584: */
585: public void pcmf_commitSessionTR();
586:
587: /**
588: * <p>
589: * Rollback a session transaction
590: * </p>
591: * <p>
592: *
593: * </p>
594: * <p>
595: * </p>
596: */
597: public void pcmf_rollbackSessionTR();
598:
599: /**
600: * <p>
601: * Returns the name of the current template kit or null if no kit is available
602: * </p>
603: * <p>
604: *
605: * @return templatekit name
606: * </p>
607: * <p>
608: * </p>
609: */
610: public String pcmf_getCurrentTemplateKitName();
611:
612: /**
613: * <p>
614: * Sets the host/domain name of an application.
615: * </p>
616: * <p>
617: *
618: * </p>
619: * <p>
620: * </p>
621: */
622: public void pcmf_setHostName(String xHost);
623:
624: /**
625: * <p>
626: * Sets the communication port of the application.
627: * </p>
628: * <p>
629: *
630: * </p>
631: * <p>
632: * </p>
633: */
634: public void pcmf_setHttpPort(int xPort);
635:
636: /**
637: * <p>
638: * Disables the lazy widget feature
639: * </p>
640: * <p>
641: *
642: * </p>
643: * <p>
644: * </p>
645: */
646: public void pcmf_disableLazyWidgets();
647:
648: /**
649: * <p>
650: * Sets an external CSS stylesheet reference
651: * </p>
652: * <p>
653: *
654: * </p>
655: * <p>
656: * </p>
657: */
658: public void pcmf_setExternalCss(String xCss);
659:
660: /**
661: * <p>
662: * Gets the external CSS stylesheet reference
663: * </p>
664: * <p>
665: *
666: * </p>
667: * <p>
668: * </p>
669: */
670: public String pcmf_getExternalCss();
671:
672: /**
673: * <p>
674: * Return whether css is supported or not
675: * </p>
676: * <p>
677: *
678: * @return css supported
679: *
680: * </p>
681: * <p>
682: * </p>
683: */
684: public boolean pcmf_isCssSupported();
685:
686: /**
687: * <p>
688: * If a dialog is used within a mdi environment it may be reshaped. Because
689: * the corresponding events lead to massive network traffic, they can be
690: * enabled and disabled separately.
691: * </p>
692: * <p>
693: *
694: * </p>
695: * <p>
696: *
697: * @param xReshapes
698: * true or false
699: * </p>
700: */
701: public void pcmf_setGenerateReshapeEvents(boolean xReshapes);
702:
703: /**
704: * <p>
705: * Returns whether reshape events are generated or not
706: * </p>
707: * <p>
708: *
709: * @return the genReshapeEvent property
710: * </p>
711: * <p>
712: * </p>
713: */
714: public boolean pcmf_getGenerateReshapeEvents();
715:
716: /**
717: * <p>
718: * Shows the applications main frame
719: * </p>
720: * <p>
721: *
722: * </p>
723: * <p>
724: * </p>
725: */
726: public void pcmf_show();
727:
728: /**
729: * <p>
730: * Gets the background processing service from the application
731: * </p>
732: * <p>
733: *
734: * @return process object for background processing
735: * </p>
736: * <p>
737: * </p>
738: */
739: public PcProcess pcmf_getService();
740:
741: /**
742: * <p>
743: * Sets a background processing function to the application. The function is
744: * called every xPollService milliseconds. The Client is refreshed every
745: * xRefresh milliseconds
746: * </p>
747: * <p>
748: *
749: * </p>
750: * <p>
751: *
752: * @param xServiceFct
753: * background processing function, null stops and removes an existing
754: * service
755: * @param xPollService
756: * poll intervall in milliseconds
757: * @param xRefresh
758: * client refresh intervall in millisrconds (>1000)
759: * </p>
760: */
761: public void pcmf_setService(IKeExecutable xServiceFct,
762: int xPollService, int xRefresh);
763:
764: /**
765: * <p>
766: * Sets a background processing process (see process documentation for more
767: * information) to the application. This is used for complex, event driven or
768: * maybe distributed background processing. The Client is refreshed every
769: * xRefresh milliseconds.
770: * </p>
771: * <p>
772: *
773: * </p>
774: * <p>
775: *
776: * @param xPollServiceProc
777: * poll intervall in milliseconds
778: * @param xRefresh
779: * client refresh intervall in millisrconds (>1000)
780: * </p>
781: */
782: public void pcmf_setServiceProcess(PcProcess xServiceProc,
783: int xRefresh);
784:
785: /**
786: * <p>
787: * Removes the service from the application without killing it. For Swing
788: * applications this has no effect until stopping the process.
789: * </p>
790: * <p>
791: *
792: * @return process object for background processing
793: * </p>
794: * <p>
795: * </p>
796: */
797: public PcProcess pcmf_detachService();
798:
799: /**
800: * <p>
801: * Starts the client polling the server every xPollTime millis
802: * </p>
803: * <p>
804: *
805: * </p>
806: * <p>
807: *
808: * @param xPollTime
809: * poll invervall in milli seconds
810: * </p>
811: */
812: public void pcmf_startClientPoll(int xPollTime);
813:
814: /**
815: * <p>
816: * Stops the clinet polling th server
817: * </p>
818: * <p>
819: *
820: * </p>
821: * <p>
822: * </p>
823: */
824: public void pcmf_stopClientPoll();
825:
826: /**
827: * <p>
828: * Returns whether the client poll the server or not
829: * </p>
830: * <p>
831: *
832: * @return true indicates poll, false no poll
833: * </p>
834: * <p>
835: * </p>
836: */
837: public boolean pcmf_getClientPoll();
838:
839: /**
840: * <p>
841: * Persits the current application
842: * </p>
843: * <p>
844: *
845: * @return reactivation object (usually a string with a link)
846: * </p>
847: */
848: public Object pcmf_persist() throws Throwable;
849:
850: /**
851: * <p>
852: * For internal use only
853: * </p>
854: */
855: public void pcmf_resumed();
856:
857: /**
858: * <p>
859: * For internal use only
860: * </p>
861: */
862: public void pcmf_prePersit();
863:
864: /**
865: * <p>
866: * Sets the handler wich is calld when the application has been resumed
867: * </p>
868: * <p>
869: *
870: * </p>
871: * <p>
872: *
873: * @param xResHdl
874: * Handler, ccalled after resume service
875: */
876: public void pcmf_setResumeHandler(IKeExecutable xResHdl);
877:
878: /**
879: * <p>
880: * To inform a clustered container that session values changed
881: * </p>
882: */
883: public void pcmf_refreshSession();
884:
885: /**
886: * <p>
887: * Start Session recording
888: * </p>
889: *
890: * @param xRecord
891: * true starts recording, false stops recording
892: */
893: public void pcmf_record(boolean xRecord);
894:
895: /**
896: * <p>
897: * Playback a recorded Session
898: * </p>
899: */
900: public void pcmf_playback();
901:
902: /**
903: * <p>
904: * Playback a recorded Session
905: * </p>
906: */
907: public void pcmf_playback(String xSession);
908:
909: /**
910: * <p>
911: * For internal use only
912: * </p>
913: */
914: public void pcmf_setInPlayBack(boolean xIn);
915:
916: /**
917: * <p>
918: * For internal use only
919: * </p>
920: */
921: public void pcmf_clearSubmitValues();
922:
923: /**
924: * <p>
925: * Every time the persist method is called a checkpoint is set in the HO
926: * session recording. This function sets the recording back to the last
927: * checkpoint.
928: * </p>
929: */
930: public void pcmf_toLastCheckPoint();
931:
932: /**
933: * <p>
934: * Sets the protocol for http bases communication
935: * </p>
936: */
937:
938: public void pcmf_setProtocol(String xProto);
939:
940: /**
941: * <p>
942: * Gets the protocol for http bases communication
943: * </p>
944: */
945: public String pcmf_getProtocol();
946:
947: /**
948: * <p>
949: * Adds a mapping listener to the application. The listener is called whenever
950: * a value of a component is mapped to it's peer.
951: * </p>
952: * <p>
953: *
954: * </p>
955: * <p>
956: *
957: * @param xListen
958: * listener to add
959: */
960: public void pcmf_addMappingListener(IUnMappingEventListener xListen);
961:
962: /**
963: * <p>
964: * Removes a mapping listener from the application.
965: * </p>
966: * <p>
967: *
968: * </p>
969: * <p>
970: *
971: * @param xListen
972: * listener to remove
973: */
974: public void pcmf_removeMappingListener(
975: IUnMappingEventListener xListen);
976: }
|