/*******************************************************************************
* Copyright 2015 xWic group (http://www.xwic.de)
*
* 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 de.jwic.sourceviewer.viewer.impl;
import java.io.FileReader;
import java.io.StringWriter;
import de.java2html.converter.JavaSource2HTMLConverter;
import de.java2html.javasource.JavaSource;
import de.java2html.javasource.JavaSourceParser;
import de.java2html.options.JavaSourceConversionOptions;
import de.jwic.base.Control;
import de.jwic.base.IControlContainer;
import de.jwic.sourceviewer.main.SVModel;
import de.jwic.sourceviewer.model.FileElement;
import de.jwic.sourceviewer.model.FileType;
import de.jwic.sourceviewer.model.NavigationElement;
import de.jwic.sourceviewer.viewer.IObjectViewer;
/**
*
* @author Florian Lippisch
*/
public class JavaCodeViewer extends Control implements IObjectViewer {
private String htmlCode = "";
/**
* @param container
* @param name
*/
public JavaCodeViewer(IControlContainer container, String name) {
super(container, name);
}
/* (non-Javadoc)
* @see de.jwic.sourceviewer.viewer.IObjectViewer#isSupported(de.jwic.sourceviewer.model.NavigationElement)
*/
public boolean isSupported(NavigationElement element) {
if (element instanceof FileElement) {
FileElement file = (FileElement)element;
return file.getType().equals(FileType.JAVA) || file.getType().equals(FileType.JS);
}
return false;
}
/* (non-Javadoc)
* @see de.jwic.sourceviewer.viewer.IObjectViewer#setNavigationElement(de.jwic.sourceviewer.model.NavigationElement)
*/
public void setNavigationElement(NavigationElement element) {
if (element == null) {
htmlCode = "";
return; // direct exit
}
if (false) {
htmlCode = "test";
return;
}
FileElement fe = (FileElement)element;
try {
FileReader reader = new FileReader(fe.getFile());
JavaSource source = new JavaSourceParser().parse(reader);
JavaSource2HTMLConverter converter = new JavaSource2HTMLConverter();
StringWriter writer = new StringWriter();
JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault();
//options.setShowLineNumbers(true);
converter.convert(source, options, writer);
htmlCode = writer.toString();
reader.close();
} catch (Exception e) {
log.error("Error creating HTML code", e);
htmlCode = "Error creating html code: " + e;
}
}
/**
* @return the htmlCode
*/
public String getHtmlCode() {
return htmlCode;
}
public void init(SVModel model) {
// do nothing atm
}
}