/**
* Copyright 2015 Santhosh Kumar Tekuri
*
* The JLibs authors license this file to you 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 jlibs.examples.core.graph.navigators;
import jlibs.core.graph.Navigator;
import jlibs.core.graph.Path;
import jlibs.core.graph.navigators.FilteredTreeNavigator;
import jlibs.core.graph.navigators.PathNavigator;
import jlibs.swing.outline.DefaultColumn;
import jlibs.swing.outline.DefaultRenderDataProvider;
import jlibs.swing.outline.DefaultRowModel;
import jlibs.swing.tree.NavigatorTreeModel;
import jlibs.xml.sax.helpers.MyNamespaceSupport;
import jlibs.xml.xsd.XSNavigator;
import jlibs.xml.xsd.XSParser;
import jlibs.xml.xsd.XSUtil;
import jlibs.xml.xsd.display.*;
import org.apache.xerces.xs.XSModel;
import org.netbeans.swing.outline.DefaultOutlineModel;
import org.netbeans.swing.outline.Outline;
import org.netbeans.swing.outline.RowModel;
import javax.swing.*;
import javax.swing.tree.TreeModel;
import java.awt.*;
/**
* @author Santhosh Kumar T
*/
public class OutlineNavigatorTest extends JFrame{
protected Outline outline = new Outline();
public OutlineNavigatorTest(String title){
super(title);
Container contents = getContentPane();
contents.add(new JScrollPane(outline));
outline.setRootVisible(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 500);
}
public Outline getOutline(){
return outline;
}
@SuppressWarnings({"unchecked"})
public static void main(String[] args) throws Exception{
String url = JOptionPane.showInputDialog("File/URL", "http://schemas.xmlsoap.org/wsdl/");
if(url==null)
return;
XSModel model = new XSParser().parse(url);
MyNamespaceSupport nsSupport = XSUtil.createNamespaceSupport(model);
Navigator navigator1 = new FilteredTreeNavigator(new XSNavigator(), new XSDisplayFilter());
Navigator navigator = new PathNavigator(navigator1);
XSPathDiplayFilter filter = new XSPathDiplayFilter(navigator1);
navigator = new FilteredTreeNavigator(navigator, filter);
TreeModel treeModel = new NavigatorTreeModel(new Path(model), navigator);
RowModel rowModel = new DefaultRowModel(new DefaultColumn("Detail", String.class, new XSDisplayValueVisitor(nsSupport))/*, new ClassColumn()*/);
OutlineNavigatorTest test = new OutlineNavigatorTest("Navigator Test");
Outline outline = test.getOutline();
outline.setShowGrid(false);
outline.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14));
outline.setModel(DefaultOutlineModel.createOutlineModel(treeModel, rowModel));
outline.getColumnModel().getColumn(1).setMinWidth(150);
DefaultRenderDataProvider dataProvider = new DefaultRenderDataProvider();
dataProvider.setDisplayNameVisitor(new XSDisplayNameVisitor(nsSupport, filter));
dataProvider.setForegroundVisitor(new XSColorVisitor(filter));
dataProvider.setFontStyleVisitor(new XSFontStyleVisitor(filter));
outline.setRenderDataProvider(dataProvider);
test.setVisible(true);
}
}