Changeset 33174 in osm for applications/editors/josm


Ignore:
Timestamp:
2017-03-05T14:36:19+01:00 (8 years ago)
Author:
donvip
Message:

fix errors with error_prone

Location:
applications/editors/josm/plugins/CommandLine/src/CommandLine
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/CommandLine/src/CommandLine/Command.java

    r32779 r33174  
    154154            if (obj instanceof String) return true;
    155155            break;
     156        default:
     157            break;
    156158        }
    157159        return false;
  • applications/editors/josm/plugins/CommandLine/src/CommandLine/CommandLine.java

    r32780 r33174  
    8080        history = new History(100);
    8181        historyField = new DisableShortcutsOnFocusGainedTextField();
    82         textField = new DisableShortcutsOnFocusGainedTextField() {
    83             @Override
    84             protected void processKeyEvent(KeyEvent e) {
    85                 if (e.getID() == KeyEvent.KEY_PRESSED) {
    86                     int code = e.getKeyCode();
    87                     if (code == KeyEvent.VK_ENTER) {
    88                         String commandText = textField.getText().substring(prefix.length());
    89                         switch (mode) {
    90                         case IDLE:
    91                             if (commandText.isEmpty()) {
    92                                 commandText = history.getLastItem();
    93                             } else {
    94                                 history.addItem(commandText);
    95                             }
    96                             Command command = findCommand(commandText, true);
    97                             if (command != null) {
    98                                 startCommand(command);
    99                             } else {
    100                                 setMode(Mode.IDLE);
    101                             }
    102                             break;
    103                         case SELECTION:
    104                             if (currentMapFrame.mapMode instanceof WayAction
    105                              || currentMapFrame.mapMode instanceof NodeAction
    106                              || currentMapFrame.mapMode instanceof RelationAction
    107                              || currentMapFrame.mapMode instanceof AnyAction) {
    108                                 Collection<OsmPrimitive> selected = Main.getLayerManager().getEditDataSet().getSelected();
    109                                 if (selected.size() > 0)
    110                                     loadParameter(selected, true);
    111                             } else {
    112                                 loadParameter(commandText, currentCommand.parameters.get(currentCommand.currentParameterNum).maxInstances == 1);
    113                             }
    114                             break;
    115                         case ADJUSTMENT:
    116                             break;
    117                         }
    118                         e.consume();
    119                     } else if (code == KeyEvent.VK_UP) {
    120                         textField.setText(prefix + history.getPrevItem());
    121                         e.consume();
    122                     } else if (code == KeyEvent.VK_DOWN) {
    123                         textField.setText(prefix + history.getNextItem());
    124                         e.consume();
    125                     } else if (code == KeyEvent.VK_BACK_SPACE || code == KeyEvent.VK_LEFT) {
    126                         if (textField.getCaretPosition() <= prefix.length())
    127                             e.consume();
    128                     } else if (code == KeyEvent.VK_HOME) {
    129                         setCaretPosition(prefix.length());
    130                         e.consume();
    131                     } else if (code == KeyEvent.VK_ESCAPE) {
    132                         if (textField.getText().length() == prefix.length() && mode == Mode.IDLE)
    133                             deactivate();
    134                         else
    135                             endInput();
    136                         e.consume();
    137                     } else if (code == KeyEvent.VK_DELETE || code == KeyEvent.VK_RIGHT || code == KeyEvent.VK_END) {
    138                     } else {
    139                         e.consume();
    140                     }
    141                     if (textField.getCaretPosition() < prefix.length() ||
    142                             (textField.getSelectionStart() < prefix.length() && textField.getSelectionStart() > 0))
    143                         e.consume();
    144                 }
    145                 if (e.getID() == KeyEvent.KEY_TYPED)
    146                     if (textField.getCaretPosition() < prefix.length() ||
    147                             (textField.getSelectionStart() < prefix.length() && textField.getSelectionStart() > 0))
    148                         e.consume();
    149                 super.processKeyEvent(e);
    150                 if (textField.getText().length() < prefix.length()) { // Safe
    151                     setMode(mode);
    152                 }
    153                 if (e.getID() == KeyEvent.KEY_TYPED) {
    154                     if (e.getKeyChar() > 'A' && e.getKeyChar() < 'z') {
    155                         Command command = findCommand(textField.getText().substring(prefix.length()), false);
    156                         if (command != null) {
    157                             int currentPos = textField.getSelectionStart() == 0 ? textField.getCaretPosition() : textField.getSelectionStart();
    158                             textField.setText(prefix + command.name);
    159                             textField.setCaretPosition(currentPos);
    160                             textField.select(currentPos, prefix.length() + command.name.length());
    161                         }
    162                     }
    163                 }
    164             }
    165 
    166             @Override
    167             protected void processMouseEvent(MouseEvent e) {
    168                 super.processMouseEvent(e);
    169                 if (e.getButton() == MouseEvent.BUTTON1 && e.getID() == MouseEvent.MOUSE_RELEASED) {
    170                     if (textField.getSelectionStart() > 0 && textField.getSelectionStart() < prefix.length())
    171                         textField.setSelectionStart(prefix.length());
    172                     else if (textField.getCaretPosition() < prefix.length())
    173                         textField.setCaretPosition(prefix.length());
    174                 }
    175             }
    176         };
     82        textField = new CommandTextField();
    17783
    17884        if (Main.main.menu != null) {
    179             commandMenu = Main.main.menu.addMenu("Commands", tr("Commands"), KeyEvent.VK_O, Main.main.menu.getDefaultMenuPos(), ht("/Plugin/CommandLine"));
     85            commandMenu = Main.main.menu.addMenu("Commands", tr("Commands"), KeyEvent.VK_O,
     86                    Main.main.menu.getDefaultMenuPos(), ht("/Plugin/CommandLine"));
    18087            MainMenu.add(commandMenu, new CommandLineAction(this));
    18188        }
     
    366273                    }
    367274                }
    368                 ImageryInfo info = ((ImageryLayer) layer).getInfo();
    369                 String url = info.getUrl();
    370                 String itype = info.getImageryType().getTypeString();
    371                 loadParameter((url.equals("") ? itype : url), true);
     275                if (layer != null) {
     276                    ImageryInfo info = ((ImageryLayer) layer).getInfo();
     277                    String url = info.getUrl();
     278                    loadParameter(url.isEmpty() ? info.getImageryType().getTypeString() : url, true);
     279                }
    372280                action = new DummyAction(currentMapFrame, this);
    373281                break;
     
    458366    }
    459367
     368    private final class CommandTextField extends DisableShortcutsOnFocusGainedTextField {
     369        @Override
     370        protected void processKeyEvent(KeyEvent e) {
     371            if (e.getID() == KeyEvent.KEY_PRESSED) {
     372                int code = e.getKeyCode();
     373                if (code == KeyEvent.VK_ENTER) {
     374                    String commandText = textField.getText().substring(prefix.length());
     375                    switch (mode) {
     376                    case IDLE:
     377                        if (commandText.isEmpty()) {
     378                            commandText = history.getLastItem();
     379                        } else {
     380                            history.addItem(commandText);
     381                        }
     382                        Command command = findCommand(commandText, true);
     383                        if (command != null) {
     384                            startCommand(command);
     385                        } else {
     386                            setMode(Mode.IDLE);
     387                        }
     388                        break;
     389                    case SELECTION:
     390                        if (currentMapFrame.mapMode instanceof WayAction
     391                         || currentMapFrame.mapMode instanceof NodeAction
     392                         || currentMapFrame.mapMode instanceof RelationAction
     393                         || currentMapFrame.mapMode instanceof AnyAction) {
     394                            Collection<OsmPrimitive> selected = Main.getLayerManager().getEditDataSet().getSelected();
     395                            if (!selected.isEmpty())
     396                                loadParameter(selected, true);
     397                        } else {
     398                            loadParameter(commandText, currentCommand.parameters.get(currentCommand.currentParameterNum).maxInstances == 1);
     399                        }
     400                        break;
     401                    case ADJUSTMENT:
     402                    default:
     403                        break;
     404                    }
     405                    e.consume();
     406                } else if (code == KeyEvent.VK_UP) {
     407                    textField.setText(prefix + history.getPrevItem());
     408                    e.consume();
     409                } else if (code == KeyEvent.VK_DOWN) {
     410                    textField.setText(prefix + history.getNextItem());
     411                    e.consume();
     412                } else if (code == KeyEvent.VK_BACK_SPACE || code == KeyEvent.VK_LEFT) {
     413                    if (textField.getCaretPosition() <= prefix.length())
     414                        e.consume();
     415                } else if (code == KeyEvent.VK_HOME) {
     416                    setCaretPosition(prefix.length());
     417                    e.consume();
     418                } else if (code == KeyEvent.VK_ESCAPE) {
     419                    if (textField.getText().length() == prefix.length() && mode == Mode.IDLE)
     420                        deactivate();
     421                    else
     422                        endInput();
     423                    e.consume();
     424                } else if (code == KeyEvent.VK_DELETE || code == KeyEvent.VK_RIGHT || code == KeyEvent.VK_END) {
     425                } else {
     426                    e.consume();
     427                }
     428                if (textField.getCaretPosition() < prefix.length() ||
     429                        (textField.getSelectionStart() < prefix.length() && textField.getSelectionStart() > 0))
     430                    e.consume();
     431            }
     432            if (e.getID() == KeyEvent.KEY_TYPED)
     433                if (textField.getCaretPosition() < prefix.length() ||
     434                        (textField.getSelectionStart() < prefix.length() && textField.getSelectionStart() > 0))
     435                    e.consume();
     436            super.processKeyEvent(e);
     437            if (textField.getText().length() < prefix.length()) { // Safe
     438                setMode(mode);
     439            }
     440            if (e.getID() == KeyEvent.KEY_TYPED) {
     441                if (e.getKeyChar() > 'A' && e.getKeyChar() < 'z') {
     442                    Command command = findCommand(textField.getText().substring(prefix.length()), false);
     443                    if (command != null) {
     444                        int currentPos = textField.getSelectionStart() == 0 ? textField.getCaretPosition() : textField.getSelectionStart();
     445                        textField.setText(prefix + command.name);
     446                        textField.setCaretPosition(currentPos);
     447                        textField.select(currentPos, prefix.length() + command.name.length());
     448                    }
     449                }
     450            }
     451        }
     452
     453        @Override
     454        protected void processMouseEvent(MouseEvent e) {
     455            super.processMouseEvent(e);
     456            if (e.getButton() == MouseEvent.BUTTON1 && e.getID() == MouseEvent.MOUSE_RELEASED) {
     457                if (textField.getSelectionStart() > 0 && textField.getSelectionStart() < prefix.length())
     458                    textField.setSelectionStart(prefix.length());
     459                else if (textField.getCaretPosition() < prefix.length())
     460                    textField.setCaretPosition(prefix.length());
     461            }
     462        }
     463    }
     464
    460465    private static class ToolProcess {
    461466        public Process process;
     
    508513
    509514        // redirect child process's stderr to JOSM stderr
    510         new Thread(new Runnable() {
    511             @Override
    512             public void run() {
    513                 try {
    514                     byte[] buffer = new byte[1024];
    515                     InputStream errStream = tp.process.getErrorStream();
    516                     int len;
    517                     while ((len = errStream.read(buffer)) > 0) {
    518                         synchronized (debugstr) {
    519                             debugstr.append(new String(buffer, 0, len, StandardCharsets.UTF_8));
    520                         }
    521                         System.err.write(buffer, 0, len);
    522                     }
    523                 } catch (IOException e) {
    524                     Main.warn(e);
    525                 }
     515        new Thread(() -> {
     516            try {
     517                byte[] buffer = new byte[1024];
     518                InputStream errStream = tp.process.getErrorStream();
     519                int len;
     520                while ((len = errStream.read(buffer)) > 0) {
     521                    synchronized (debugstr) {
     522                        debugstr.append(new String(buffer, 0, len, StandardCharsets.UTF_8));
     523                    }
     524                    System.err.write(buffer, 0, len);
     525                }
     526            } catch (IOException e) {
     527                Main.warn(e);
    526528            }
    527529        }).start();
    528530
    529531        // Write stdin stream
    530         Thread osmWriteThread = new Thread(new Runnable() {
    531             @Override
    532             public void run() {
    533                 BBox bbox = null;
    534                 final OutputStream outputStream = tp.process.getOutputStream();
    535                 PrintWriter printWriter = null;
    536                 try {
    537                     printWriter = new PrintWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
    538                 } catch (Exception e) {
    539                     Main.error(e);
    540                 }
    541                 final OsmWriter osmWriter = OsmWriterFactory.createOsmWriter(printWriter, true, null);
    542                 Collection<OsmPrimitive> refObjects = currentCommand.getDepsObjects();
    543                 Collection<OsmPrimitive> pObjects;
     532        Thread osmWriteThread = new Thread(() -> {
     533            BBox bbox = null;
     534            final OutputStream outputStream = tp.process.getOutputStream();
     535            PrintWriter printWriter = null;
     536            try {
     537                printWriter = new PrintWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
     538            } catch (Exception e1) {
     539                Main.error(e1);
     540            }
     541            final OsmWriter osmWriter = OsmWriterFactory.createOsmWriter(printWriter, true, null);
     542            Collection<OsmPrimitive> refObjects = currentCommand.getDepsObjects();
     543            Collection<OsmPrimitive> pObjects;
     544            osmWriter.header();
     545            Collection<OsmPrimitive> contents = new ArrayList<>();
     546            for (OsmPrimitive primitive1 : refObjects) {
     547                contents.add(primitive1);
     548                if (bbox == null)
     549                    bbox = new BBox(primitive1.getBBox());
     550                else
     551                    bbox.addPrimitive(primitive1, 0.0);
     552            }
     553            osmWriter.writeNodes(new SubclassFilteredCollection<OsmPrimitive, Node>(contents, Node.class::isInstance));
     554            osmWriter.writeWays(new SubclassFilteredCollection<OsmPrimitive, Way>(contents, Way.class::isInstance));
     555            osmWriter.writeRelations(new SubclassFilteredCollection<OsmPrimitive, Relation>(contents, Relation.class::isInstance));
     556            osmWriter.footer();
     557            osmWriter.flush();
     558
     559            for (Parameter parameter : parameters) {
     560                if (!parameter.isOsm())
     561                    continue;
     562                contents = new ArrayList<>();
    544563                osmWriter.header();
    545                 Collection<OsmPrimitive> contents = new ArrayList<>();
    546                 for (OsmPrimitive primitive : refObjects) {
    547                     contents.add(primitive);
     564                pObjects = parameter.getParameterObjects();
     565                for (OsmPrimitive primitive2 : pObjects) {
     566                    contents.add(primitive2);
    548567                    if (bbox == null)
    549                         bbox = new BBox(primitive.getBBox());
     568                        bbox = new BBox(primitive2.getBBox());
    550569                    else
    551                         bbox.addPrimitive(primitive, 0.0);
     570                        bbox.addPrimitive(primitive2, 0.0);
    552571                }
    553572                osmWriter.writeNodes(new SubclassFilteredCollection<OsmPrimitive, Node>(contents, Node.class::isInstance));
     
    556575                osmWriter.footer();
    557576                osmWriter.flush();
    558 
    559                 for (Parameter parameter : parameters) {
    560                     if (!parameter.isOsm())
    561                         continue;
    562                     contents = new ArrayList<>();
    563                     osmWriter.header();
    564                     pObjects = parameter.getParameterObjects();
    565                     for (OsmPrimitive primitive : pObjects) {
    566                         contents.add(primitive);
    567                         if (bbox == null)
    568                             bbox = new BBox(primitive.getBBox());
    569                         else
    570                             bbox.addPrimitive(primitive, 0.0);
    571                     }
    572                     osmWriter.writeNodes(new SubclassFilteredCollection<OsmPrimitive, Node>(contents, Node.class::isInstance));
    573                     osmWriter.writeWays(new SubclassFilteredCollection<OsmPrimitive, Way>(contents, Way.class::isInstance));
    574                     osmWriter.writeRelations(new SubclassFilteredCollection<OsmPrimitive, Relation>(contents, Relation.class::isInstance));
    575                     osmWriter.footer();
    576                     osmWriter.flush();
    577                 }
    578 
    579                 if (tracks) {
    580                     try (GpxWriter gpxWriter = new GpxWriter(printWriter)) {
    581                         GpxFilter gpxFilter = new GpxFilter();
    582                         gpxFilter.initBboxFilter(bbox);
    583                         List<GpxLayer> gpxLayers = Main.getLayerManager().getLayersOfType(GpxLayer.class);
    584                         for (GpxLayer gpxLayer : gpxLayers) {
    585                             gpxFilter.addGpxData(gpxLayer.data);
    586                         }
    587                         gpxWriter.write(gpxFilter.getGpxData());
    588                     } catch (IOException e) {
    589                         Main.warn(e);
    590                     }
    591                 }
    592                 Utils.close(osmWriter);
    593                 synchronized (syncObj) {
    594                     if (currentCommand.asynchronous) {
    595                         tp.running = false;
    596                         syncObj.notifyAll();
    597                     }
     577            }
     578
     579            if (tracks) {
     580                try (GpxWriter gpxWriter = new GpxWriter(printWriter)) {
     581                    GpxFilter gpxFilter = new GpxFilter();
     582                    gpxFilter.initBboxFilter(bbox);
     583                    List<GpxLayer> gpxLayers = Main.getLayerManager().getLayersOfType(GpxLayer.class);
     584                    for (GpxLayer gpxLayer : gpxLayers) {
     585                        gpxFilter.addGpxData(gpxLayer.data);
     586                    }
     587                    gpxWriter.write(gpxFilter.getGpxData());
     588                } catch (IOException e2) {
     589                    Main.warn(e2);
     590                }
     591            }
     592            Utils.close(osmWriter);
     593            synchronized (syncObj) {
     594                if (currentCommand.asynchronous) {
     595                    tp.running = false;
     596                    syncObj.notifyAll();
    598597                }
    599598            }
  • applications/editors/josm/plugins/CommandLine/src/CommandLine/Parameter.java

    r32779 r33174  
    6868            out = String.valueOf(value);
    6969            break;
     70        default:
     71            break;
    7072        }
    7173        return out;
Note: See TracChangeset for help on using the changeset viewer.