summaryrefslogtreecommitdiffstats
path: root/src/com/itmill
diff options
context:
space:
mode:
authorMarc Englund <marc.englund@itmill.com>2009-02-12 14:51:31 +0000
committerMarc Englund <marc.englund@itmill.com>2009-02-12 14:51:31 +0000
commitfc5388c5ea5ea3467ed2582bb55773db2e375ce6 (patch)
tree2f3e6573e3b84c37a41cc9bf3d96f0e5aec1edc3 /src/com/itmill
parent6e3b79ab28fc99faaba74192d8c4a965fbd49c6a (diff)
downloadvaadin-framework-fc5388c5ea5ea3467ed2582bb55773db2e375ce6.tar.gz
vaadin-framework-fc5388c5ea5ea3467ed2582bb55773db2e375ce6.zip
View source in subwindow / native window. Fixes #2561
svn changeset:6821/svn branch:trunk
Diffstat (limited to 'src/com/itmill')
-rw-r--r--src/com/itmill/toolkit/demo/sampler/CodeLabel.java5
-rw-r--r--src/com/itmill/toolkit/demo/sampler/FeatureView.java64
-rw-r--r--src/com/itmill/toolkit/demo/sampler/SamplerApplication.java39
3 files changed, 70 insertions, 38 deletions
diff --git a/src/com/itmill/toolkit/demo/sampler/CodeLabel.java b/src/com/itmill/toolkit/demo/sampler/CodeLabel.java
index 67f8875567..bc0f0bdf2c 100644
--- a/src/com/itmill/toolkit/demo/sampler/CodeLabel.java
+++ b/src/com/itmill/toolkit/demo/sampler/CodeLabel.java
@@ -7,7 +7,7 @@ public class CodeLabel extends Label {
private static final String TAG = "codelabel";
public CodeLabel() {
- super.setContentMode(CONTENT_PREFORMATTED);
+ setContentMode(CONTENT_PREFORMATTED);
}
public CodeLabel(String content) {
@@ -21,10 +21,11 @@ public class CodeLabel extends Label {
@Override
public void setContentMode(int contentMode) {
- if (contentMode != Label.CONTENT_PREFORMATTED) {
+ if (contentMode != CONTENT_PREFORMATTED) {
throw new UnsupportedOperationException(
"Only preformatted content supported");
}
+ super.setContentMode(CONTENT_PREFORMATTED);
}
}
diff --git a/src/com/itmill/toolkit/demo/sampler/FeatureView.java b/src/com/itmill/toolkit/demo/sampler/FeatureView.java
index 8a9fd29ad7..f652f01807 100644
--- a/src/com/itmill/toolkit/demo/sampler/FeatureView.java
+++ b/src/com/itmill/toolkit/demo/sampler/FeatureView.java
@@ -14,21 +14,19 @@ import com.itmill.toolkit.ui.Label;
import com.itmill.toolkit.ui.Link;
import com.itmill.toolkit.ui.Panel;
import com.itmill.toolkit.ui.VerticalLayout;
+import com.itmill.toolkit.ui.Window;
import com.itmill.toolkit.ui.Button.ClickEvent;
public class FeatureView extends HorizontalLayout {
private static final String MSG_SHOW_SRC = "Show Java™ source »";
- private static final String MSG_HIDE_SRC = "Hide Java™ source";
private Panel right;
private VerticalLayout left;
private VerticalLayout controls;
- private Panel sourcePanel;
- private Label sourceCode;
- private Button showCode;
+ private ActiveLink srcWin;
private HashMap<Feature, Component> exampleCache = new HashMap<Feature, Component>();
@@ -74,36 +72,31 @@ public class FeatureView extends HorizontalLayout {
controlButtons.addComponent(new Label("|"));
- showCode = new Button(MSG_SHOW_SRC, new Button.ClickListener() {
- public void buttonClick(ClickEvent event) {
- toggleSource();
+ srcWin = new ActiveLink();
+ srcWin
+ .setDescription("Right / middle / ctrl / shift -click for browser window/tab");
+ srcWin.addListener(new LinkActivatedListener() {
+
+ public void linkActivated(LinkActivatedEvent event) {
+ if (!event.isLinkOpened()) {
+ Window w = new Window("Java™ source");
+ ((VerticalLayout) w.getLayout()).setSizeUndefined();
+ w.setWidth("70%");
+ w.setHeight("60%");
+ w.setPositionX(100);
+ w.setPositionY(100);
+ w.addComponent(new CodeLabel(currentFeature.getSource()));
+ getWindow().addWindow(w);
+ }
+
}
- });
- showCode.setStyleName(Button.STYLE_LINK);
- showCode.addStyleName("showcode");
- controlButtons.addComponent(showCode);
-
- sourceCode = new CodeLabel();
-
- sourcePanel = new Panel();
- sourcePanel.getLayout().setSizeUndefined();
- sourcePanel.addStyleName(Panel.STYLE_LIGHT);
- sourcePanel.addStyleName("source");
- sourcePanel.addComponent(sourceCode);
- sourcePanel.setVisible(false);
- sourcePanel.setWidth("100%");
- sourcePanel.setHeight("250px");
-
- controls.addComponent(sourcePanel);
- }
- private void toggleSource() {
- showSource(!sourcePanel.isVisible());
- }
+ });
+ srcWin.setCaption(MSG_SHOW_SRC);
+ srcWin.addStyleName("showcode");
+ srcWin.setTargetBorder(Link.TARGET_BORDER_NONE);
+ controlButtons.addComponent(srcWin);
- private void showSource(boolean show) {
- showCode.setCaption((show ? MSG_HIDE_SRC : MSG_SHOW_SRC));
- sourcePanel.setVisible(show);
}
private void resetExample() {
@@ -120,7 +113,6 @@ public class FeatureView extends HorizontalLayout {
currentFeature = feature;
right.removeAllComponents();
left.removeAllComponents();
- showSource(false);
left.addComponent(controls);
controls.setCaption(feature.getName());
@@ -154,7 +146,13 @@ public class FeatureView extends HorizontalLayout {
}
}
- sourceCode.setValue(feature.getSource());
+ { // open src in new window -link
+ String path = SamplerApplication.getPathFor(currentFeature);
+ srcWin.setTargetName(path);
+ srcWin.setResource(new ExternalResource(getApplication()
+ .getURL()
+ + "src/" + path));
+ }
NamedExternalResource[] resources = feature.getRelatedResources();
if (resources != null) {
diff --git a/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java b/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java
index f9802d98d2..2607d83310 100644
--- a/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java
+++ b/src/com/itmill/toolkit/demo/sampler/SamplerApplication.java
@@ -1,6 +1,7 @@
package com.itmill.toolkit.demo.sampler;
import java.net.URI;
+import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -15,9 +16,11 @@ import com.itmill.toolkit.demo.sampler.ModeSwitch.ModeSwitchEvent;
import com.itmill.toolkit.event.ItemClickEvent;
import com.itmill.toolkit.event.ItemClickEvent.ItemClickListener;
import com.itmill.toolkit.terminal.ClassResource;
+import com.itmill.toolkit.terminal.DownloadStream;
import com.itmill.toolkit.terminal.ExternalResource;
import com.itmill.toolkit.terminal.Resource;
import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.terminal.URIHandler;
import com.itmill.toolkit.ui.Alignment;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.ComboBox;
@@ -80,8 +83,13 @@ public class SamplerApplication extends Application {
public Window getWindow(String name) {
Window w = super.getWindow(name);
if (w == null) {
- w = new SamplerWindow();
- w.setName(name);
+ if (name.startsWith("src")) {
+ w = new SourceWindow();
+ } else {
+ w = new SamplerWindow();
+ w.setName(name);
+ }
+
addWindow(w);
}
return w;
@@ -500,7 +508,8 @@ public class SamplerApplication extends Application {
String current = "";
ActiveLink link = null;
for (int i = 0; i < parts.length; i++) {
- layout.addComponent(new Label("‣"));
+ layout.addComponent(new Label("&raquo;",
+ Label.CONTENT_XHTML));
current += (i > 0 ? "/" : "") + parts[i];
Feature f = FeatureSet.FEATURES.getFeatureByPath(current);
link = new ActiveLink(f.getName(), new ExternalResource("#"
@@ -712,4 +721,28 @@ public class SamplerApplication extends Application {
return allFeatures;
}
+ public class SourceWindow extends Window {
+ public SourceWindow() {
+ addURIHandler(new URIHandler() {
+ public DownloadStream handleURI(URL context, String relativeUri) {
+ Feature f = FeatureSet.FEATURES
+ .getFeatureByPath(relativeUri);
+ if (f != null) {
+ addComponent(new CodeLabel(f.getSource()));
+ } else {
+ addComponent(new Label("Sorry, no source found for "
+ + relativeUri));
+ }
+ return null;
+ }
+
+ });
+
+ addListener(new CloseListener() {
+ public void windowClose(CloseEvent e) {
+ SamplerApplication.this.removeWindow(SourceWindow.this);
+ }
+ });
+ }
+ }
}