jeffliu | ec1c478 | 2006-05-24 14:16:24 +0000 | [diff] [blame] | 1 | /******************************************************************************* |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 2 | * Copyright (c) 2002, 2010 IBM Corporation and others. |
jeffliu | ec1c478 | 2006-05-24 14:16:24 +0000 | [diff] [blame] | 3 | * 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 |
amywu | ecebb04 | 2007-04-10 20:07:35 +0000 | [diff] [blame] | 7 | * |
jeffliu | ec1c478 | 2006-05-24 14:16:24 +0000 | [diff] [blame] | 8 | * Contributors: |
| 9 | * IBM Corporation - initial API and implementation |
| 10 | * Jens Lukowski/Innoopract - initial renaming/restructuring |
| 11 | * |
| 12 | *******************************************************************************/ |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 13 | package org.eclipse.wst.xml.ui.internal.catalog; |
| 14 | |
| 15 | |
| 16 | import org.eclipse.swt.SWT; |
| 17 | import org.eclipse.swt.graphics.Color; |
| 18 | import org.eclipse.swt.layout.GridData; |
| 19 | import org.eclipse.swt.widgets.Composite; |
| 20 | import org.eclipse.swt.widgets.ScrollBar; |
| 21 | import org.eclipse.swt.widgets.Text; |
kchong | 723abdc | 2006-11-14 21:13:54 +0000 | [diff] [blame] | 22 | import org.eclipse.wst.common.uriresolver.internal.util.URIHelper; |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 23 | import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogElement; |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 24 | import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry; |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 25 | import org.eclipse.wst.xml.core.internal.catalog.provisional.IDelegateCatalog; |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 26 | import org.eclipse.wst.xml.core.internal.catalog.provisional.INextCatalog; |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 27 | import org.eclipse.wst.xml.core.internal.catalog.provisional.IRewriteEntry; |
| 28 | import org.eclipse.wst.xml.core.internal.catalog.provisional.ISuffixEntry; |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 29 | |
| 30 | |
| 31 | |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 32 | public class XMLCatalogEntryDetailsView { |
| 33 | protected Text detailsText; |
| 34 | protected ScrollBar verticalScroll, horizontalScroll; |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 35 | |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 36 | public XMLCatalogEntryDetailsView(Composite parent) { |
| 37 | Color color = parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND); |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 38 | |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 39 | detailsText = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 40 | |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 41 | GridData data = new GridData(GridData.FILL_BOTH); |
| 42 | data.heightHint = 85; |
| 43 | detailsText.setLayoutData(data); |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 44 | |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 45 | verticalScroll = detailsText.getVerticalBar(); |
| 46 | // verticalScroll.setVisible(false); |
| 47 | horizontalScroll = detailsText.getHorizontalBar(); |
| 48 | detailsText.setEditable(false); |
| 49 | detailsText.setBackground(color); |
| 50 | } |
kchong | 723abdc | 2006-11-14 21:13:54 +0000 | [diff] [blame] | 51 | |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 52 | protected void setCatalogEntry(ICatalogEntry entry) { |
vbaciu | 5c63d79 | 2008-04-01 18:10:47 +0000 | [diff] [blame] | 53 | if (entry == null) { |
| 54 | detailsText.setText(""); //$NON-NLS-1$ |
| 55 | return; |
| 56 | } |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 57 | String value = getDisplayValue(entry != null ? entry.getURI() : ""); //$NON-NLS-1$ |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 58 | 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_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 65 | } |
| 66 | else { |
vbaciu | f1e1190 | 2007-02-02 20:57:51 +0000 | [diff] [blame] | 67 | value = URIUtils.convertURIToLocation(value); |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 68 | line1 = XMLCatalogMessages.UI_LABEL_DETAILS_URI_LOCATION + "\t\t\t" + value; //$NON-NLS-1$ |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 69 | |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 70 | } |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 71 | 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_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 76 | value = entry != null ? getKeyTypeValue(entry) : ""; //$NON-NLS-1$ |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 77 | String line3 = XMLCatalogMessages.UI_KEY_TYPE_DETAILS_COLON + "\t\t\t" + value; //$NON-NLS-1$ |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 78 | value = getDisplayValue(entry != null ? entry.getKey() : ""); //$NON-NLS-1$ |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 79 | 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_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 81 | detailsText.setText(entireString); |
| 82 | } |
| 83 | |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 84 | protected void setNextCatalog(INextCatalog nextCatalog) { |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 85 | String value = getDisplayValue(nextCatalog != null ? nextCatalog.getCatalogLocation() : ""); //$NON-NLS-1$ |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 86 | 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_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 90 | detailsText.setText(entireString); |
| 91 | } |
jmoller | 380db61 | 2010-03-08 20:44:34 +0000 | [diff] [blame] | 92 | |
| 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_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 167 | |
| 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; |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 189 | } |
| 190 | |
david_williams | ef7420b | 2006-11-23 04:30:09 +0000 | [diff] [blame] | 191 | } |
| 192 | return result; |
| 193 | } |
csalter | a3a2daa | 2005-06-15 06:53:51 +0000 | [diff] [blame] | 194 | } |