aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/demo/features/Feature.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/itmill/toolkit/demo/features/Feature.java')
-rw-r--r--src/com/itmill/toolkit/demo/features/Feature.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/demo/features/Feature.java b/src/com/itmill/toolkit/demo/features/Feature.java
new file mode 100644
index 0000000000..003f884ac1
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/features/Feature.java
@@ -0,0 +1,122 @@
+/* *************************************************************************
+
+ IT Mill Toolkit
+
+ Development of Browser User Intarfaces Made Easy
+
+ Copyright (C) 2000-2006 IT Mill Ltd
+
+ *************************************************************************
+
+ This product is distributed under commercial license that can be found
+ from the product package on license/license.txt. Use of this product might
+ require purchasing a commercial license from IT Mill Ltd. For guidelines
+ on usage, see license/licensing-guidelines.html
+
+ *************************************************************************
+
+ For more information, contact:
+
+ IT Mill Ltd phone: +358 2 4802 7180
+ Ruukinkatu 2-4 fax: +358 2 4802 7181
+ 20540, Turku email: info@itmill.com
+ Finland company www: www.itmill.com
+
+ Primary source for information and releases: www.itmill.com
+
+ ********************************************************************** */
+
+package com.itmill.toolkit.demo.features;
+
+import com.itmill.toolkit.terminal.ClassResource;
+import com.itmill.toolkit.terminal.Resource;
+import com.itmill.toolkit.ui.*;
+
+public class Feature extends CustomComponent {
+
+ private TabSheet ts;
+
+ private boolean initialized = false;
+
+ private static Resource sampleIcon;
+
+ /** Constuctor for the feature component */
+ public Feature() {
+ ts = new TabSheet();
+ setCompositionRoot(ts);
+ }
+
+ /** Feature component initialization is lazily done when the
+ * feature is attached to application */
+ public void attach() {
+
+ // Check if the feature is already initialized
+ if (initialized) return;
+ initialized = true;
+
+ // Optional description with image
+ String desc = getDescriptionXHTML();
+ String title = getTitle();
+ if (desc != null && title != null) {
+ GridLayout gl = new GridLayout(2, 1);
+ if (getImage() != null)
+ gl.addComponent(
+ new Embedded(
+ "", new ClassResource(getImage(), this.getApplication())));
+ gl.addComponent(
+ new Label(
+ "<h2>" + title + "</h2>" + desc,
+ Label.CONTENT_XHTML));
+ ts.addTab(gl, "Description", null);
+ }
+
+ // Demo
+ Component demo = getDemoComponent();
+ if (demo != null)
+ ts.addTab(demo, "Demo", null);
+
+ // Example source
+ String example = getExampleSrc();
+ if (example != null) {
+ OrderedLayout l = new OrderedLayout();
+ l.addComponent(
+ new Label(
+ "<h2>" + getTitle() + " example</h2>",
+ Label.CONTENT_XHTML));
+ l.addComponent(new Label(example, Label.CONTENT_PREFORMATTED));
+ ts.addTab(l, "Code Sample", null);
+ }
+ }
+
+ /** Get the desctiption of the feature as XHTML fragment */
+ protected String getDescriptionXHTML() {
+ return "<h2>Feature description is under construction</h2>";
+ }
+
+ /** Get the title of the feature */
+ protected String getTitle() {
+ return this.getClass().getName();
+ }
+
+ /** Get the name of the image file that will be put on description page */
+ protected String getImage() {
+ return null;
+ }
+
+ /** Get the example application source code */
+ protected String getExampleSrc() {
+ return null;
+ }
+
+ /** Get the feature demo component */
+ protected Component getDemoComponent() {
+ return null;
+ }
+
+ /** Get sample icon resource */
+ protected Resource getSampleIcon() {
+ if (sampleIcon == null) sampleIcon = new ClassResource("m.gif",this.getApplication());
+ return sampleIcon;
+ }
+
+} \ No newline at end of file