1 /*
2 * $HeadURL: $
3 * $Date: $
4 * $Revision: $
5 * $Author: $
6 *
7 * Copyright (c) 2005 MindTree Consulting Ltd.
8 *
9 * This file is part of Insight.
10 *
11 * Insight is free software: you can redistribute it and/or modify it under the
12 * terms of the GNU General Public License as published by the Free Software
13 * Foundation, either version 3 of the License, or (at your option) any later
14 * version.
15 *
16 * Insight is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
19 * Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License along with
22 * Insight. If not, see <http://www.gnu.org/licenses/>.
23 */
24 package com.mindtree.techworks.insight.gui;
25
26 import javax.swing.JComponent;
27
28 import com.mindtree.techworks.insight.pagination.IPage;
29 import com.mindtree.techworks.insight.spi.LogEvent;
30
31 /**
32 * The <code>Presentation</code> interface defines the behavior common to all
33 * GUI component blocks that exist in the log viewer. The methods defined in
34 * this interface are typically call back methods invoked by the Controller at
35 * appropriate instance of time.
36 * Implementations of this interface neednot necessarily be GUI components themselves
37 * and can actually be wrappers if need be.
38 *
39 * @author Regunath B
40 * @version 1.0, 04/10/25
41 * @see com.mindtree.techworks.insight.Controller
42 */
43
44
45 public interface Presentation {
46
47 /**
48 * Gets the UID for this Presentation. May be the fully qualified class name
49 * of the implementation class.
50 * @return the UID that identifies this Presentation among other instances of the same type
51 *
52 */
53 public String getUID();
54
55 /**
56 * Notifies this Presentation that a widget has changed in the specified Presentation
57 * for which this Presentation had registered for widget change updates.
58 * @param presentation the Presentation containing the widget
59 * @param identifier unique identifier of the widget in the Presentation
60 * @param data null or the information returned by the source Presentation containing data in the context of the widget change
61 */
62 public void notifyWidgetStateChange(Presentation presentation, int identifier, Object data);
63
64 /**
65 * Gets the component that represents the GUI of this Presentation
66 * @return the JComponent instance that denotes the view of this Presentation
67 *
68 */
69 public JComponent getViewComponent();
70
71
72 /**
73 * Determines if this Presentation updates its GUI representation when
74 * new events occur. Primarily of use to implementations that can update their
75 * display when new events occur
76 * @return true if this Presentation supports real time updates, false otherwise
77 */
78 public boolean doesProcessRealTimeUpdates();
79
80 /**
81 * Informs this Presentation that a new real time event has occurred.
82 * This method is called only when <code>#doesProcessRealTimeUpdates()</code>
83 * returns true.
84 * @param event the real time event that was received
85 */
86 public void processRealTimeUpdate(LogEvent event);
87
88 /**
89 * Informs this Presentation to reset all display widgets
90 */
91 public void resetWidgets();
92
93 /**
94 * Informs this Presentation ot display the specified page and highlight the
95 * LogEvent with the specified sequence number.
96 * @param page the IPage to display
97 * @param eventSequenceNumber -1 or the valid sequence number of the LogEvent to be highlighted
98 */
99 public void displayPage(IPage page, long eventSequenceNumber);
100
101 /**
102 * Sets the status of the scroll lock for this Presentation.
103 * @param lock boolean true for scroll lock, false otherwise
104 */
105 public void setScrollLock(boolean status);
106
107 }