/** * 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.swing.xml.xsd; import org.netbeans.swing.outline.Outline; import org.netbeans.swing.outline.RowModel; import org.netbeans.swing.outline.DefaultOutlineModel; import org.apache.xerces.xs.XSModel; import javax.swing.*; import javax.swing.tree.TreeModel; import java.awt.*; 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.tree.NavigatorTreeModel; import jlibs.swing.outline.DefaultRowModel; import jlibs.swing.outline.DefaultColumn; import jlibs.swing.outline.DefaultRenderDataProvider; import jlibs.xml.sax.helpers.MyNamespaceSupport; import jlibs.xml.xsd.XSUtil; import jlibs.xml.xsd.XSNavigator; import jlibs.xml.xsd.display.*; /** * @author Santhosh Kumar T */ public class XSDOutlinePanel extends JPanel{ protected Outline outline = new Outline(); public XSDOutlinePanel(){ super(new BorderLayout()); add(new JScrollPane(outline), BorderLayout.CENTER); outline.setRootVisible(false); outline.setShowGrid(false); outline.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14)); } public void setXSModel(XSModel model){ setXSModel(model, XSUtil.createNamespaceSupport(model)); } @SuppressWarnings({"unchecked"}) public void setXSModel(XSModel model, MyNamespaceSupport nsSupport){ 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()*/); 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); } }