/*
* Copyright (c) 2011 PonySDK
* Owners:
* Luciano Broussal <luciano.broussal AT gmail.com>
* Mathieu Barbier <mathieu.barbier AT gmail.com>
* Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com>
*
* WebSite:
* http://code.google.com/p/pony-sdk/
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.ponysdk.sample.client.page;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.Collection;
import java.util.Collections;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ponysdk.core.ui.basic.Element;
import com.ponysdk.core.ui.basic.PHTML;
import com.ponysdk.core.ui.basic.PScrollPanel;
import com.ponysdk.core.ui.basic.PSimpleLayoutPanel;
import com.ponysdk.core.ui.basic.PTabLayoutPanel;
import com.ponysdk.core.ui.basic.PWidget;
import com.ponysdk.core.ui.place.Place;
import com.ponysdk.impl.webapplication.page.DefaultPageView;
import com.ponysdk.impl.webapplication.page.PageActivity;
import de.java2html.converter.JavaSource2HTMLConverter;
import de.java2html.javasource.JavaSource;
import de.java2html.javasource.JavaSourceParser;
import de.java2html.options.JavaSourceConversionOptions;
public class SamplePageActivity extends PageActivity {
private static Logger log = LoggerFactory.getLogger(SamplePageActivity.class);
protected PSimpleLayoutPanel examplePanel;
public SamplePageActivity(final String pageName, final String pageCategory) {
this(pageName, Collections.singleton(pageCategory));
}
public SamplePageActivity(final String pageName, final Collection<String> pageCategories) {
super(pageName, pageCategories);
setPageView(new DefaultPageView(pageName));
}
@Override
protected void onInitialization() {
}
@Override
protected void onShowPage(final Place place) {
}
@Override
protected void onLeavingPage() {
}
@Override
protected void onFirstShowPage() {
PScrollPanel codePanel = Element.newPScrollPanel();
examplePanel = new PSimpleLayoutPanel() {
@Override
public void setWidget(final PWidget w) {
applyExampleStyle(w);
super.setWidget(w);
}
};
examplePanel.setSizeFull();
PTabLayoutPanel tabPanel = Element.newPTabLayoutPanel();
tabPanel.add(examplePanel, "Example");
final PHTML sourcePanel = Element.newPHTML(getSource());
sourcePanel.addStyleName("codepanel");
codePanel.setWidget(sourcePanel);
tabPanel.add(codePanel, "Source Code");
view.setWidget(tabPanel);
}
protected String getSource() {
final String fileName = getClass().getName().replaceAll("\\.", "/") + ".java";
final ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = null;
try {
inputStream = classLoader.getResourceAsStream(fileName);
if (inputStream == null) return "Unable to load file: " + fileName;
final StringWriter writer = new StringWriter();
final JavaSource javaSource = new JavaSourceParser().parse(inputStream);
final JavaSource2HTMLConverter converter = new JavaSource2HTMLConverter();
converter.convert(javaSource, JavaSourceConversionOptions.getDefault(), writer);
return writer.toString();
} catch (final IOException e) {
log.error("", e);
}
return "";
}
protected void applyExampleStyle(final PWidget widget) {
widget.addStyleName("examplepanel");
}
}