Revision 650 org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/composer/DefaultJScriptingComposer.java

View differences:

DefaultJScriptingComposer.java
68 68
import org.gvsig.scripting.CompileErrorException;
69 69
import org.gvsig.scripting.ExecuteErrorException;
70 70
import org.gvsig.scripting.ScriptingBaseScript;
71
import org.gvsig.scripting.ScriptingErrorException;
71 72
import org.gvsig.scripting.ScriptingFolder;
72 73
import org.gvsig.scripting.ScriptingManager;
73 74
import org.gvsig.scripting.ScriptingNotification;
......
78 79
import org.gvsig.scripting.swing.api.JScriptingBrowser;
79 80
import org.gvsig.scripting.swing.api.JScriptingBrowser.BrowserActionEvent;
80 81
import org.gvsig.scripting.swing.api.JScriptingComposer;
82
import static org.gvsig.scripting.swing.api.JScriptingComposer.DOCKED_PROBLEMS;
81 83
import org.gvsig.scripting.swing.api.JScriptingComposer.Dock.DockedPanel;
82 84
import org.gvsig.scripting.swing.api.JScriptingComposer.Problems;
83 85
import org.gvsig.scripting.swing.api.JScriptingComposer.Problems.Problem;
......
89 91
import org.gvsig.scripting.swing.impl.DefaultJScriptingConsole;
90 92
import org.gvsig.scripting.swing.impl.DefaultScriptingUIManager;
91 93
import org.gvsig.scripting.swing.impl.JDialogContent;
94
import org.gvsig.scripting.swing.impl.composer.DefaultJScriptingComposer.DefaultProblems.ProblemsTableMode.DefaultProblem;
92 95
import org.gvsig.tools.ToolsLocator;
93 96
import org.gvsig.tools.i18n.I18nManager;
94 97
import org.gvsig.tools.observer.Observable;
......
938 941
                }
939 942
                Problem row = problems.getSelect();
940 943
                if (row != null) {
944
                    JEditor editor;
941 945
                    int lineno = row.getLineNumber();
942
                    JEditor editor = getCurrentEditor();
943
                    if (editor instanceof JCodeEditor) {
944
                        ((JCodeEditor) editor).selectLine(lineno);
946
                    if( row.getResource() == null ) {
947
                        editor = getCurrentEditor();
948
                    } else {
949
                        String id = row.getResource().getAbsolutePath();
950
                        DockedPanel panel = getDock().get(id);
951
                        if( panel == null ) {
952
                            ScriptingBaseScript script = manager.getScript(row.getResource());
953
                            scriptEdit(script);
954
                            panel = getDock().get(id);
955
                            if( panel == null ) {
956
                                logger.warn("Can't load script '"+id+"'.");
957
                                return;
958
                            }
959
                        } 
960
                        panel.select();
961
                        editor = (JEditor) panel.getComponent();
945 962
                    }
963
                    if ( editor instanceof JCodeEditor) {
964
                        ((JCodeEditor) editor).gotoline(lineno);
965
                    }
946 966
                }
947 967
            }
948 968
        });
......
961 981
            panel.select();
962 982
            return;
963 983
        }
964
        DefaultJScriptingConsole console = new DefaultJScriptingConsole();
984
        DefaultJScriptingConsole console = new DefaultJScriptingConsole(true);
965 985
        this.dock.add(
966 986
                DOCKED_CONSOLE,
967 987
                this.uimanager.getTranslation("Console"),
......
1120 1140
    }
1121 1141

  
1122 1142
    public void scriptEdit(ScriptingBaseScript unit) {
1123
        String id = unit.getFile().getAbsolutePath();
1143
        String id = unit.getScriptFile().getAbsolutePath();
1124 1144
        DockedPanel x = this.dock.get(id);
1125 1145
        if (x != null) {
1126 1146
            x.select();
......
1544 1564
                CompileErrorException ce = (CompileErrorException) e.getException();
1545 1565
                Problems problems = this.getProblems();
1546 1566
                if (problems != null) {
1547
                    problems.add(
1548
                            "Error",
1549
                            ce.getMessage(),
1550
                            ce.getScriptName(),
1551
                            ce.getLineNumber(),
1552
                            ce.getColumnNumber()
1553
                    );
1567
                    problems.add("Error", ce);
1554 1568
                    this.dock.select(DOCKED_PROBLEMS);
1555 1569
                }
1556 1570

  
......
1558 1572
                ExecuteErrorException ee = (ExecuteErrorException) e.getException();
1559 1573
                Problems problems = this.getProblems();
1560 1574
                if (problems != null) {
1561
                    problems.add(
1562
                            "Error",
1563
                            ee.getMessage(),
1564
                            ee.getScriptName(),
1565
                            ee.getLineNumber(),
1566
                            ee.getColumnNumber()
1567
                    );
1575
                    problems.add("Error",ee);
1568 1576
                    this.dock.select(DOCKED_PROBLEMS);
1569 1577
                }
1570 1578
                JScriptingConsole console = this.getConsole();
......
1574 1582
                }
1575 1583

  
1576 1584
            } else {
1577
                Throwable ex = e.getException();
1585
                Exception ex = e.getException();
1578 1586
                Problems problems = this.getProblems();
1579 1587
                if (problems != null) {
1580
                    problems.add(
1581
                            "Error",
1582
                            ex.getMessage(),
1583
                            null,
1584
                            null
1585
                    );
1588
                    problems.add("Error",ex); 
1586 1589
                    this.dock.select(DOCKED_PROBLEMS);
1587 1590
                }
1588 1591
                JScriptingConsole console = this.getConsole();
......
1814 1817
            public static class DefaultProblem implements Problem {
1815 1818

  
1816 1819
                String[] row;
1820
                private File resource;
1817 1821

  
1822
                public DefaultProblem() {
1823
                    this.row = new String[NUM_COLUMNS];
1824
                }
1825

  
1818 1826
                public DefaultProblem(String[] row) {
1819 1827
                    this.row = row;
1820 1828
                }
1821 1829

  
1822
                public DefaultProblem(String type, String message, String resource, String location) {
1830
                public DefaultProblem(String type, String message, String resourceName, String location, File resource) {
1823 1831
                    String[] row = new String[NUM_COLUMNS];
1824 1832
                    row[COLUMN_TYPE] = type;
1825 1833
                    row[COLUMN_MESSAGE] = message;
1826
                    row[COLUMN_RESOURCE] = resource;
1834
                    row[COLUMN_RESOURCE] = resourceName;
1827 1835
                    row[COLUMN_LOCATION] = location;
1836
                    this.resource = resource;
1828 1837
                    this.row = row;
1829 1838
                }
1830 1839

  
......
1851 1860
                }
1852 1861

  
1853 1862
                @Override
1854
                public String getResource() {
1863
                public String getResourceName() {
1855 1864
                    return this.row[COLUMN_RESOURCE];
1856 1865
                }
1857 1866

  
1858 1867
                @Override
1868
                public File getResource() {
1869
                    return this.resource;
1870
                }
1871

  
1872
                @Override
1859 1873
                public int getLineNumber() {
1860 1874
                    try {
1861 1875
                        String[] lineAndColumn = this.row[COLUMN_LOCATION].split(":");
......
1897 1911
                this.fireTableDataChanged();
1898 1912
            }
1899 1913

  
1900
            private void add(String type, String message, String resource, String location) {
1901
                DefaultProblem problem = new DefaultProblem(type, message, resource, location);
1914
            private void add(String type, String message, String resourceName, String location, File resource) {
1915
                DefaultProblem problem = new DefaultProblem(type, message, resourceName, location, resource);
1902 1916
                this.add(problem);
1903 1917
            }
1904 1918

  
......
2005 2019

  
2006 2020
        @Override
2007 2021
        public void add(String type, String message, String resource, String location) {
2008
            this.tableModel.add(type, message, resource, location);
2022
            this.tableModel.add(type, message, resource, location, null);
2009 2023
        }
2010 2024

  
2011 2025
        @Override
2012 2026
        public void add(String type, String message, String resource, int line, int column) {
2013 2027
            this.add(type, message, resource, line + ":" + column);
2014 2028
        }
2029
        
2030
        public void add(String type, String message, String resourceName, int line, int column, File resource) {
2031
            this.tableModel.add(type, message, resourceName, line + ":" + column, resource);
2032
        }
2033
                
2034
        @Override
2035
        public void add(String type, Exception e) {
2036
            if (e  instanceof ScriptingErrorException) {
2037
                ScriptingErrorException se = (ScriptingErrorException) e;
2038
                    this.add(
2039
                        "Error",
2040
                        se.getMessage(),
2041
                        se.getScriptName(),
2042
                        se.getLineNumber(),
2043
                        se.getColumnNumber(),
2044
                        se.getScriptFile()
2045
                    );
2015 2046

  
2047
            } else {
2048
                    this.add("Error", 
2049
                        "Error",
2050
                        e.getMessage(),
2051
                        null
2052
                    );
2053
            }            
2054
        }
2055

  
2016 2056
        @Override
2017 2057
        public Problem getSelect() {
2018 2058
            int row = this.table.getSelectedRow();

Also available in: Unified diff