001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2005-2006, Geotools Project Managment Committee (PMC)
005: * (C) 2005, Institut de Recherche pour le Développement
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: */
017: package org.geotools.gui.swing.referencing;
018:
019: // J2SE dependencies
020: import java.awt.BorderLayout;
021: import javax.swing.JComponent;
022: import javax.swing.JScrollPane;
023: import javax.swing.JTabbedPane;
024: import javax.swing.JTextArea;
025:
026: // OpenGIS dependencies
027: import org.opengis.referencing.IdentifiedObject;
028:
029: // Geotools dependencies
030: import org.geotools.resources.Utilities;
031: import org.geotools.resources.i18n.Vocabulary;
032: import org.geotools.resources.i18n.VocabularyKeys;
033: import org.geotools.referencing.wkt.UnformattableObjectException;
034:
035: /**
036: * Display informations about a CRS object. Current implementation only display the
037: * <cite>Well Known Text</cite> (WKT). We may provide more informations in a future
038: * version.
039: *
040: * @since 2.3
041: * @version $Id: PropertiesSheet.java 20883 2006-08-07 13:48:09Z jgarnett $
042: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/extension/widgets-swing/src/main/java/org/geotools/gui/swing/referencing/PropertiesSheet.java $
043: * @author Martin Desruisseaux
044: */
045: public class PropertiesSheet extends JComponent {
046: /**
047: * Provides different view of the CRS object (properties, WKT, etc.).
048: */
049: private final JTabbedPane tabs;
050:
051: /**
052: * The <cite>Well Known Text</cite> area.
053: */
054: private final JTextArea wktArea;
055:
056: /**
057: * Creates a new, initially empty, property sheet.
058: */
059: public PropertiesSheet() {
060: tabs = new JTabbedPane();
061: wktArea = new JTextArea();
062: wktArea.setEditable(false);
063: tabs.addTab("WKT", new JScrollPane(wktArea));
064: setLayout(new BorderLayout());
065: add(tabs, BorderLayout.CENTER);
066: }
067:
068: /**
069: * Sets the object to display in this property sheet.
070: *
071: * @param item The object to display info about.
072: */
073: public void setIdentifiedObject(final IdentifiedObject item) {
074: String text;
075: try {
076: text = item.toWKT();
077: } catch (UnsupportedOperationException e) {
078: text = e.getLocalizedMessage();
079: if (text == null) {
080: text = Utilities.getShortClassName(e);
081: }
082: final String lineSeparator = System.getProperty(
083: "line.separator", "\n");
084: if (e instanceof UnformattableObjectException) {
085: text = Vocabulary.format(VocabularyKeys.WARNING) + ": "
086: + text + lineSeparator + lineSeparator + item
087: + lineSeparator;
088: } else {
089: text = Vocabulary.format(VocabularyKeys.ERROR) + ": "
090: + text + lineSeparator;
091: }
092: }
093: wktArea.setText(text);
094: }
095:
096: /**
097: * Sets an error message to display instead of the current identified object.
098: *
099: * @param message The error message.
100: */
101: public void setErrorMessage(final String message) {
102: wktArea.setText(Vocabulary.format(VocabularyKeys.ERROR_$1,
103: message));
104: }
105: }
|