blob: 054695065d4c6cba19f1753c7397a142e24905c0 [file] [log] [blame]
jeffliuec1c4782006-05-24 14:16:24 +00001/*******************************************************************************
jmoller380db612010-03-08 20:44:34 +00002 * Copyright (c) 2002, 2010 IBM Corporation and others.
jeffliuec1c4782006-05-24 14:16:24 +00003 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
amywuecebb042007-04-10 20:07:35 +00007 *
jeffliuec1c4782006-05-24 14:16:24 +00008 * Contributors:
9 * IBM Corporation - initial API and implementation
10 * Jens Lukowski/Innoopract - initial renaming/restructuring
11 *
12 *******************************************************************************/
csaltera3a2daa2005-06-15 06:53:51 +000013package org.eclipse.wst.xml.ui.internal.catalog;
14
15
16import org.eclipse.swt.SWT;
17import org.eclipse.swt.graphics.Color;
18import org.eclipse.swt.layout.GridData;
19import org.eclipse.swt.widgets.Composite;
20import org.eclipse.swt.widgets.ScrollBar;
21import org.eclipse.swt.widgets.Text;
kchong723abdc2006-11-14 21:13:54 +000022import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
jmoller380db612010-03-08 20:44:34 +000023import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogElement;
csaltera3a2daa2005-06-15 06:53:51 +000024import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry;
jmoller380db612010-03-08 20:44:34 +000025import org.eclipse.wst.xml.core.internal.catalog.provisional.IDelegateCatalog;
csaltera3a2daa2005-06-15 06:53:51 +000026import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog;
jmoller380db612010-03-08 20:44:34 +000027import org.eclipse.wst.xml.core.internal.catalog.provisional.IRewriteEntry;
28import org.eclipse.wst.xml.core.internal.catalog.provisional.ISuffixEntry;
csaltera3a2daa2005-06-15 06:53:51 +000029
30
31
david_williamsef7420b2006-11-23 04:30:09 +000032public class XMLCatalogEntryDetailsView {
33 protected Text detailsText;
34 protected ScrollBar verticalScroll, horizontalScroll;
csaltera3a2daa2005-06-15 06:53:51 +000035
david_williamsef7420b2006-11-23 04:30:09 +000036 public XMLCatalogEntryDetailsView(Composite parent) {
37 Color color = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
csaltera3a2daa2005-06-15 06:53:51 +000038
david_williamsef7420b2006-11-23 04:30:09 +000039 detailsText = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
csaltera3a2daa2005-06-15 06:53:51 +000040
david_williamsef7420b2006-11-23 04:30:09 +000041 GridData data = new GridData(GridData.FILL_BOTH);
42 data.heightHint = 85;
43 detailsText.setLayoutData(data);
csaltera3a2daa2005-06-15 06:53:51 +000044
david_williamsef7420b2006-11-23 04:30:09 +000045 verticalScroll = detailsText.getVerticalBar();
46 // verticalScroll.setVisible(false);
47 horizontalScroll = detailsText.getHorizontalBar();
48 detailsText.setEditable(false);
49 detailsText.setBackground(color);
50 }
kchong723abdc2006-11-14 21:13:54 +000051
jmoller380db612010-03-08 20:44:34 +000052 protected void setCatalogEntry(ICatalogEntry entry) {
vbaciu5c63d792008-04-01 18:10:47 +000053 if (entry == null) {
54 detailsText.setText(""); //$NON-NLS-1$
55 return;
56 }
david_williamsef7420b2006-11-23 04:30:09 +000057 String value = getDisplayValue(entry != null ? entry.getURI() : ""); //$NON-NLS-1$
jmoller380db612010-03-08 20:44:34 +000058 String line0 = XMLCatalogMessages.UI_LABEL_ENTRY_ELEMENT_COLON + "\t\t"; //$NON-NLS-1$
59 String line2 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_COLON + "\t\t\t\t" + value; //$NON-NLS-1$
60 String line1;
61 if (value.startsWith("jar:file:")) { //$NON-NLS-1$
62 String jarFile = URIUtils.convertURIToLocation(URIHelper.ensureURIProtocolFormat(value.substring("jar:".length(), value.indexOf('!')))); //$NON-NLS-1$
63 String internalFile = URIUtils.convertURIToLocation(URIHelper.ensureURIProtocolFormat("file://" + value.substring(value.indexOf('!') + 1))); //$NON-NLS-1$
64 line1 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_LOCATION + "\t\t\t" + internalFile + " " + XMLCatalogMessages.UI_LABEL_DETAILS_IN_JAR_FILE + " " + jarFile; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
david_williamsef7420b2006-11-23 04:30:09 +000065 }
66 else {
vbaciuf1e11902007-02-02 20:57:51 +000067 value = URIUtils.convertURIToLocation(value);
jmoller380db612010-03-08 20:44:34 +000068 line1 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_LOCATION + "\t\t\t" + value; //$NON-NLS-1$
csaltera3a2daa2005-06-15 06:53:51 +000069
david_williamsef7420b2006-11-23 04:30:09 +000070 }
jmoller380db612010-03-08 20:44:34 +000071 switch(entry.getEntryType()) {
72 case ICatalogEntry.ENTRY_TYPE_PUBLIC: line0 += XMLCatalogMessages.UI_LABEL_PUBLIC; break;
73 case ICatalogEntry.ENTRY_TYPE_SYSTEM: line0 += XMLCatalogMessages.UI_LABEL_SYSTEM; break;
74 case ICatalogEntry.ENTRY_TYPE_URI: line0 += XMLCatalogMessages.UI_LABEL_URI; break;
75 }
david_williamsef7420b2006-11-23 04:30:09 +000076 value = entry != null ? getKeyTypeValue(entry) : ""; //$NON-NLS-1$
jmoller380db612010-03-08 20:44:34 +000077 String line3 = XMLCatalogMessages.UI_KEY_TYPE_DETAILS_COLON + "\t\t\t" + value; //$NON-NLS-1$
david_williamsef7420b2006-11-23 04:30:09 +000078 value = getDisplayValue(entry != null ? entry.getKey() : ""); //$NON-NLS-1$
jmoller380db612010-03-08 20:44:34 +000079 String line4 = XMLCatalogMessages.UI_LABEL_DETAILS_KEY_COLON + "\t\t\t\t" + value; //$NON-NLS-1$
80 String entireString = line0 + "\n" + line1 + "\n" + line2 + "\n" + line3 + "\n" + line4; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
david_williamsef7420b2006-11-23 04:30:09 +000081 detailsText.setText(entireString);
82 }
83
jmoller380db612010-03-08 20:44:34 +000084 protected void setNextCatalog(INextCatalog nextCatalog) {
david_williamsef7420b2006-11-23 04:30:09 +000085 String value = getDisplayValue(nextCatalog != null ? nextCatalog.getCatalogLocation() : ""); //$NON-NLS-1$
jmoller380db612010-03-08 20:44:34 +000086 String line0 = XMLCatalogMessages.UI_LABEL_ENTRY_ELEMENT_COLON + "\t\t" + XMLCatalogMessages.UI_LABEL_NEXT_CATALOG; //$NON-NLS-1$
87 String line1 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_LOCATION + "\t\t\t" + URIUtils.convertURIToLocation(value); //$NON-NLS-1$
88 String line2 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_COLON + "\t\t\t\t" + value; //$NON-NLS-1$
89 String entireString = line0 + "\n" + line1 + "\n" + line2; //$NON-NLS-1$ //$NON-NLS-2$
david_williamsef7420b2006-11-23 04:30:09 +000090 detailsText.setText(entireString);
91 }
jmoller380db612010-03-08 20:44:34 +000092
93 protected void setSuffixEntry(ISuffixEntry element) {
94 String value = getDisplayValue(element != null ? element.getURI() : ""); //$NON-NLS-1$
95 String line0 = XMLCatalogMessages.UI_LABEL_ENTRY_ELEMENT_COLON + "\t\t" + XMLCatalogMessages.UI_LABEL_SUFFIX_ENTRY; //$NON-NLS-1$
96 String line1 = XMLCatalogMessages.UI_LABEL_DETAILS_SUFFIX_COLON + "\t\t\t\t" + element.getSuffix(); //$NON-NLS-1$
97 String line2 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_LOCATION + "\t\t\t" + URIUtils.convertURIToLocation(value); //$NON-NLS-1$
98 String line3 = XMLCatalogMessages.UI_KEY_TYPE_DETAILS_COLON + "\t\t\t"; //$NON-NLS-1$
99 String uri = element.getURI();
100 boolean isSchema = false;
101 if(uri != null && uri.endsWith("xsd")) { //$NON-NLS-1$
102 isSchema = true;
103 }
104 switch (element.getEntryType()) {
105 case ISuffixEntry.SUFFIX_TYPE_SYSTEM:
106 line3 += isSchema? XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_XSD_SYSTEM : XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_DTD_SYSTEM;
107 break;
108 default:
109 case ISuffixEntry.SUFFIX_TYPE_URI:
110 line3 += isSchema? XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_XSD_PUBLIC : XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_URI;
111 break;
112 }
113 String entireString = line0 + "\n" + line1 +"\n" + line2 + "\n" + line3; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
114 detailsText.setText(entireString);
115 }
116
117 protected void setRewriteEntry(IRewriteEntry element) {
118 String line0 = XMLCatalogMessages.UI_LABEL_ENTRY_ELEMENT_COLON + "\t\t" + XMLCatalogMessages.UI_LABEL_REWRITE_ENTRY; //$NON-NLS-1$
119 String line1 = XMLCatalogMessages.UI_LABEL_START_STRING + "\t\t" + element.getStartString(); //$NON-NLS-1$
120 String line2 = XMLCatalogMessages.UI_LABEL_REWRITE_PREFIX + "\t" + element.getRewritePrefix(); //$NON-NLS-1$
121 String line3 = XMLCatalogMessages.UI_KEY_TYPE_DETAILS_COLON + "\t\t\t" ; //$NON-NLS-1$
122 switch (element.getEntryType()) {
123 case IRewriteEntry.REWRITE_TYPE_SYSTEM:
124 line3 += XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_DTD_SYSTEM;
125 break;
126 default:
127 case IRewriteEntry.REWRITE_TYPE_URI:
128 line3 += XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_URI;
129 break;
130 }
131 String entireString = line0 + "\n" + line1 + "\n" + line2 + "\n" + line3; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
132 detailsText.setText(entireString);
133 }
134
135 protected void setDelegateCatalog(IDelegateCatalog element) {
136 String value = getDisplayValue(element != null ? element.getCatalogLocation() : ""); //$NON-NLS-1$
137 String line0 = XMLCatalogMessages.UI_LABEL_ENTRY_ELEMENT_COLON + "\t\t" + XMLCatalogMessages.UI_LABEL_DELEGATE_CATALOG; //$NON-NLS-1$
138 String line1 = XMLCatalogMessages.UI_LABEL_START_STRING + "\t\t" + element.getStartString(); //$NON-NLS-1$
139 String line2 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_LOCATION + "\t\t\t" + URIUtils.convertURIToLocation(value); //$NON-NLS-1$
140 String line3 = XMLCatalogMessages.UI_KEY_TYPE_DETAILS_COLON + "\t\t\t"; //$NON-NLS-1$
141 switch (element.getEntryType()) {
142 case IDelegateCatalog.DELEGATE_TYPE_PUBLIC:
143 line3 += XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_DTD_PUBLIC;
144 break;
145 case IDelegateCatalog.DELEGATE_TYPE_SYSTEM:
146 line3 += XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_DTD_SYSTEM;
147 break;
148 default:
149 case IDelegateCatalog.DELEGATE_TYPE_URI:
150 line3 += XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_URI;
151 break;
152 }
153 String entireString = line0 + "\n" + line1 + "\n" + line2 + "\n" + line3; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
154 detailsText.setText(entireString);
155 }
156
157 public void setCatalogElement(ICatalogElement element) {
158 // I wish we had a visitor for this kind of mess
159 if (element instanceof ICatalogEntry) setCatalogEntry((ICatalogEntry)element);
160 else if (element instanceof INextCatalog) setNextCatalog((INextCatalog)element);
161 else if (element instanceof IDelegateCatalog) setDelegateCatalog((IDelegateCatalog)element);
162 else if (element instanceof IRewriteEntry) setRewriteEntry((IRewriteEntry)element);
163 else if (element instanceof ISuffixEntry) setSuffixEntry((ISuffixEntry)element);
164 else setCatalogEntry(null); // Gives null text
165 }
166
david_williamsef7420b2006-11-23 04:30:09 +0000167
168 protected String getDisplayValue(String string) {
169 return string != null ? string : ""; //$NON-NLS-1$
170 }
171
172 protected String getKeyTypeValue(ICatalogEntry entry) {
173 String result = null;
174 if ((entry.getURI() != null) && entry.getURI().endsWith("xsd")) //$NON-NLS-1$
175 {
176 result = (entry.getEntryType() == ICatalogEntry.ENTRY_TYPE_URI) ? XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_XSD_PUBLIC : XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_XSD_SYSTEM;
177 }
178 else {
179 switch (entry.getEntryType()) {
180 case ICatalogEntry.ENTRY_TYPE_PUBLIC :
181 result = XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_DTD_PUBLIC;
182 break;
183 case ICatalogEntry.ENTRY_TYPE_SYSTEM :
184 result = XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_DTD_SYSTEM;
185 break;
186 default :
187 result = XMLCatalogMessages.UI_KEY_TYPE_DESCRIPTION_URI;
188 break;
csaltera3a2daa2005-06-15 06:53:51 +0000189 }
190
david_williamsef7420b2006-11-23 04:30:09 +0000191 }
192 return result;
193 }
csaltera3a2daa2005-06-15 06:53:51 +0000194}