From bf8b1eb1f702ba0aac654c73416f0b84297ceddc Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Thu, 16 Oct 2008 07:30:25 +0000 Subject: [PATCH] Documented more, APIResource resolves inner classes. svn changeset:5646/svn branch:trunk --- .../toolkit/demo/sampler/APIResource.java | 8 +- .../itmill/toolkit/demo/sampler/Feature.java | 86 +++++++++++++++---- .../toolkit/demo/sampler/FeatureView.java | 15 +--- .../demo/sampler/features/DummyFeature2.java | 4 +- 4 files changed, 81 insertions(+), 32 deletions(-) diff --git a/src/com/itmill/toolkit/demo/sampler/APIResource.java b/src/com/itmill/toolkit/demo/sampler/APIResource.java index 565f53b8a7..183c9c3a52 100644 --- a/src/com/itmill/toolkit/demo/sampler/APIResource.java +++ b/src/com/itmill/toolkit/demo/sampler/APIResource.java @@ -18,7 +18,7 @@ public class APIResource extends NamedExternalResource { } public APIResource(String baseUrl, Class clazz) { - super(clazz.getSimpleName(), getJavadocUrl(baseUrl, clazz)); + super(resolveName(clazz), getJavadocUrl(baseUrl, clazz)); } private static String getJavadocUrl(String baseUrl, Class clazz) { @@ -26,6 +26,7 @@ public class APIResource extends NamedExternalResource { baseUrl += "/"; } String path = clazz.getName().replaceAll("\\.", "/"); + path = path.replaceAll("\\$", "."); return baseUrl + path + ".html"; } @@ -48,4 +49,9 @@ public class APIResource extends NamedExternalResource { return ITMILL_BASE; } + private static String resolveName(Class clazz) { + Class ec = clazz.getEnclosingClass(); + return (ec != null ? ec.getSimpleName() + "." : "") + + clazz.getSimpleName(); + } } diff --git a/src/com/itmill/toolkit/demo/sampler/Feature.java b/src/com/itmill/toolkit/demo/sampler/Feature.java index 78882fd397..d78b7afd8b 100644 --- a/src/com/itmill/toolkit/demo/sampler/Feature.java +++ b/src/com/itmill/toolkit/demo/sampler/Feature.java @@ -12,6 +12,8 @@ abstract public class Feature { public static final Object PROPERTY_NAME = "Name"; public static final Object PROPERTY_DESCRIPTION = "Description"; + private String javaSource = null; + /** * Gets the name of this feature. Defaults to class simplename, override if * needed. @@ -38,27 +40,49 @@ abstract public class Feature { * pattern description, usability discussion). *

*

- * Can return null, if the example has no related resources. + * May return null, if the example has no related resources. *

*

* The name of the NamedExternalResource will be shown in the UI.
Note * that Javadoc should be referenced via {@link #getRelatedAPI()}. *

* + * @see #getThemeBase() * @return related external stuff */ abstract public NamedExternalResource[] getRelatedResources(); /** - * Gets related API resources, i.e + * Gets related API resources, i.e links to javadoc of used classes. + *

+ * Good candidates are IT Mill classes being demoed in the example, or other + * classes playing an important role in the example. + *

+ *

+ * May return null, if the example uses no interesting classes. + *

* * @return */ abstract public APIResource[] getRelatedAPI(); + /** + * Gets related Features; the classes returned should extend Feature. + *

+ * Good candidates are Features similar to this one, Features using the + * functionality demoed in this one, and Features being used in this one. + *

+ *

+ * May return null, if no other Features are related to this one. + *

+ * + * @return + */ abstract public Class[] getRelatedFeatures(); /** + * Gets the name of the icon for this feature, usually simpleName + + * extension. * * @return */ @@ -67,7 +91,11 @@ abstract public class Feature { return icon; } - /** Get the example instance. Override if instantiation needs parameters. */ + /** + * Get the example instance. Override if instantiation needs parameters. + * + * @return + */ public Component getExample() { String className = this.getClass().getName() + "Example"; @@ -85,33 +113,59 @@ abstract public class Feature { } - public BufferedReader getSource() { + public String getSource() { // TODO get's .txt for now, change to .java! - try { - InputStream is = getClass().getResourceAsStream( - getClass().getSimpleName() + "Example.txt"); - return new BufferedReader(new InputStreamReader(is)); - } catch (Exception e) { - System.err.println("Could not read source for " + getPathName()); + synchronized (this) { + if (javaSource == null) { + StringBuffer src = new StringBuffer(); + try { + InputStream is = getClass().getResourceAsStream( + getClass().getSimpleName() + "Example.txt"); + BufferedReader bis = new BufferedReader( + new InputStreamReader(is)); + for (String line = bis.readLine(); null != line; line = bis + .readLine()) { + src.append(line); + src.append("\n"); + } + javaSource = src.toString(); + } catch (Exception e) { + System.err.println("Could not read source for " + + getPathName()); + javaSource = "Sorry, no source available right now."; + } + } } - return null; - } + return javaSource; - public BufferedReader getSourceHTML() { - return getSource(); } - public String toString() { - return getName(); + public String getSourceHTML() { + return getSource(); } + /** + * Gets the name used when resolving the path for this feature. Usually no + * need to overrride. + * + * @return + */ public String getPathName() { return getClass().getSimpleName(); } + /** + * Gets the base url used to reference theme resources. + * + * @return + */ protected static final String getThemeBase() { return SamplerApplication.THEME_BASE; } + public String toString() { + return getName(); + } + } \ No newline at end of file diff --git a/src/com/itmill/toolkit/demo/sampler/FeatureView.java b/src/com/itmill/toolkit/demo/sampler/FeatureView.java index bc960abc7b..9aeb4aca86 100644 --- a/src/com/itmill/toolkit/demo/sampler/FeatureView.java +++ b/src/com/itmill/toolkit/demo/sampler/FeatureView.java @@ -1,7 +1,5 @@ package com.itmill.toolkit.demo.sampler; -import java.io.BufferedReader; - import com.itmill.toolkit.terminal.ExternalResource; import com.itmill.toolkit.ui.Button; import com.itmill.toolkit.ui.CustomLayout; @@ -66,18 +64,7 @@ public class FeatureView extends CustomLayout { l.setContentMode(Label.CONTENT_XHTML); addComponent(l, "feature-desc"); - StringBuffer src = new StringBuffer(); - BufferedReader srcbr = feature.getSource(); - try { - for (String line = srcbr.readLine(); null != line; line = srcbr - .readLine()) { - src.append(line); - src.append("\n"); - } - } catch (Exception e) { - src = new StringBuffer("Sorry, no source available right now."); - } - sourceCode.setValue(src.toString()); + sourceCode.setValue(feature.getSource()); NamedExternalResource[] resources = feature.getRelatedResources(); if (resources != null) { diff --git a/src/com/itmill/toolkit/demo/sampler/features/DummyFeature2.java b/src/com/itmill/toolkit/demo/sampler/features/DummyFeature2.java index 8250e84a18..a5410ccad6 100644 --- a/src/com/itmill/toolkit/demo/sampler/features/DummyFeature2.java +++ b/src/com/itmill/toolkit/demo/sampler/features/DummyFeature2.java @@ -6,6 +6,7 @@ import javax.servlet.ServletContext; import com.itmill.toolkit.demo.sampler.APIResource; import com.itmill.toolkit.demo.sampler.Feature; import com.itmill.toolkit.demo.sampler.NamedExternalResource; +import com.itmill.toolkit.ui.Button; import com.itmill.toolkit.ui.Component; public class DummyFeature2 extends Feature { @@ -22,7 +23,8 @@ public class DummyFeature2 extends Feature { public APIResource[] getRelatedAPI() { return new APIResource[] { new APIResource(String.class), new APIResource(PortletContext.class), - new APIResource(ServletContext.class) }; + new APIResource(ServletContext.class), + new APIResource(Button.ClickListener.class) }; } @Override -- 2.39.5