1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21 
22 package org.apache.openoffice.ooxml.viewer;
23 
24 import java.util.Vector;
25 
26 import javax.swing.JScrollPane;
27 
28 import org.apache.openoffice.ooxml.framework.part.ContentType;
29 import org.apache.openoffice.ooxml.framework.part.OOXMLPackage;
30 import org.apache.openoffice.ooxml.framework.part.Part;
31 import org.apache.openoffice.ooxml.framework.part.PartName;
32 import org.apache.openoffice.ooxml.framework.part.parser.ParserFactory;
33 import org.apache.openoffice.ooxml.viewer.tokenview.TokenView;
34 import org.apache.openoffice.ooxml.viewer.xml.TokenType;
35 import org.apache.openoffice.ooxml.viewer.xml.XMLTokenViewFactory;
36 import org.apache.openoffice.ooxml.viewer.xmltokenview.XMLViewFactory;
37 
38 public class DetailViewManager
39 {
DetailViewManager( final JScrollPane aDetailViewContainer, final OOXMLPackage aPackage)40     public DetailViewManager (
41         final JScrollPane aDetailViewContainer,
42         final OOXMLPackage aPackage)
43     {
44         maDetailViewContainer = aDetailViewContainer;
45         maPackage = aPackage;
46         maViewFactory = new XMLTokenViewFactory();
47     }
48 
49 
50 
51 
ShowPart( final PartName aName, final ContentType eType)52     public void ShowPart (
53         final PartName aName,
54         final ContentType eType)
55     {
56         ShowPart(maPackage.getPart(aName));
57     }
58 
59 
60 
61 
ShowPart(final Part aPart)62     public void ShowPart (final Part aPart)
63     {
64         switch(aPart.getContentType())
65         {
66             case ImageGIF:
67             case ImageJPG:
68             case ImagePNG:
69                 maDetailViewContainer.setViewportView(
70                     new ImageView(aPart.getStream()).GetComponent());
71                 break;
72 
73             case ApplicationDrawing:
74             case ApplicationExcel:
75             case ApplicationXML:
76             case Chart:
77             case ContentTypes:
78             case CoreProperties:
79             case CustomXMLProperties:
80             case ExtendedProperties:
81             case PmlDocument:
82             case PmlHandoutMaster:
83             case PmlNotesMaster:
84             case PmlNotesSlide:
85             case PmlProperties:
86             case PmlSlide:
87             case PmlSlideLayout:
88             case PmlSlideMaster:
89             case PmlTableStyles:
90             case PmlViewProperties:
91             case Relationships:
92             case SmlSheet:
93             case Theme:
94             case ThemeOverride:
95             case WmlDocument:
96             case WmlEndNotes:
97             case WmlFontTable:
98             case WmlFootNotes:
99             case WmlFooter:
100             case WmlHeader:
101             case WmlNumbering:
102             case WmlSettings:
103             case WmlStyles:
104             case WmlWebSettings:
105                 final TokenView<TokenType> aTokenView = maViewFactory.Create(aPart.getStream());
106                 maDetailViewContainer.setViewportView(aTokenView);
107                 final Vector<String> aErrorsAndWarnings = new Vector<>();
108                 XMLViewFactory.AddSemanticInformation(
109                     aTokenView,
110                     ParserFactory.getParser(
111                         aPart.getContentType(),
112                         aPart.getStream(),
113                         aErrorsAndWarnings),
114                     aErrorsAndWarnings);
115                 break;
116 
117             case OleObject:
118             case Unknown:
119             default:
120                 maDetailViewContainer.setViewportView(null);
121                 break;
122         }
123     }
124 
125 
126 
127 
128     private final JScrollPane maDetailViewContainer;
129     private XMLTokenViewFactory maViewFactory;
130     private OOXMLPackage maPackage;
131 }
132