Ignore:
Timestamp:
2013-08-03T10:00:02+02:00 (11 years ago)
Author:
hind
Message:

Incorrect parameters transferring fix
Synchronous result waiting
EDT violation fix

File:
1 edited

Legend:

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

    r29784 r29817  
    4343import javax.swing.JTextField;
    4444import javax.swing.JToolBar;
     45import javax.swing.SwingUtilities;
    4546
    4647import org.openstreetmap.josm.Main;
     
    238239    }
    239240
    240     protected void printHistory(String text) {
    241         historyField.setText(text);
     241    protected void printHistory(final String text) {
     242        SwingUtilities.invokeLater(new Runnable() {
     243            @Override
     244            public void run() {
     245                historyField.setText(text);
     246            }
     247        });
    242248    }
    243249
     
    478484        // redirect child process's stderr to JOSM stderr
    479485        new Thread(new Runnable() {
    480             @Override
    481486            public void run() {
    482487                try {
     
    497502        // Write stdin stream
    498503        Thread osmWriteThread = new Thread(new Runnable() {
    499             @Override
    500504            public void run() {
    501505                BBox bbox = null;
     
    516520                        bbox.addPrimitive(primitive, 0.0);
    517521                }
     522                osmWriter.writeNodes(new SubclassFilteredCollection<OsmPrimitive, Node>(contents, OsmPrimitive.nodePredicate));
     523                osmWriter.writeWays(new SubclassFilteredCollection<OsmPrimitive, Way>(contents, OsmPrimitive.wayPredicate));
     524                osmWriter.writeRelations(new SubclassFilteredCollection<OsmPrimitive, Relation>(contents, OsmPrimitive.relationPredicate));
     525                osmWriter.footer();
     526                osmWriter.flush();
     527
    518528                for (Parameter parameter : parameters) {
    519529                    if (!parameter.isOsm())
    520530                        continue;
     531                    contents = new ArrayList<OsmPrimitive>();
     532                    osmWriter.header();
    521533                    pObjects = parameter.getParameterObjects();
    522534                    for (OsmPrimitive primitive : pObjects) {
     
    527539                            bbox.addPrimitive(primitive, 0.0);
    528540                    }
    529                 }
    530                 osmWriter.writeNodes(new SubclassFilteredCollection<OsmPrimitive, Node>(contents, OsmPrimitive.nodePredicate));
    531                 osmWriter.writeWays(new SubclassFilteredCollection<OsmPrimitive, Way>(contents, OsmPrimitive.wayPredicate));
    532                 osmWriter.writeRelations(new SubclassFilteredCollection<OsmPrimitive, Relation>(contents, OsmPrimitive.relationPredicate));
    533                 osmWriter.footer();
    534                 osmWriter.flush();
     541                    osmWriter.writeNodes(new SubclassFilteredCollection<OsmPrimitive, Node>(contents, OsmPrimitive.nodePredicate));
     542                    osmWriter.writeWays(new SubclassFilteredCollection<OsmPrimitive, Way>(contents, OsmPrimitive.wayPredicate));
     543                    osmWriter.writeRelations(new SubclassFilteredCollection<OsmPrimitive, Relation>(contents, OsmPrimitive.relationPredicate));
     544                    osmWriter.footer();
     545                    osmWriter.flush();
     546                }
     547
    535548                if (tracks) {
    536549                    final GpxWriter gpxWriter = new GpxWriter(printWriter);
     
    545558                }
    546559                Utils.close(osmWriter);
    547                 synchronized (syncObj) {
    548                     tp.running = false;
    549                     syncObj.notifyAll();
    550                 }
    551560            }
    552561        });
    553562
    554563        // Read stdout stream
    555         final OsmToCmd osmToCmd = new OsmToCmd(this, Main.main.getCurrentDataSet());
     564        final DataSet currentDataSet = Main.main.getCurrentDataSet();
     565        final CommandLine that = this;
    556566        Thread osmParseThread = new Thread(new Runnable() {
    557             @Override
    558567            public void run() {
    559568                try {
     569                    final OsmToCmd osmToCmd = new OsmToCmd(that, currentDataSet);
    560570                    String commandName = currentCommand.name;
    561571                    //HashMap<Long, Long> inexiDMap = new HashMap<Long, Long>();
     
    564574                    final List<org.openstreetmap.josm.command.Command> cmdlist = osmToCmd.getCommandList();
    565575                    if (!cmdlist.isEmpty()) {
    566                         SequenceCommand cmd = new SequenceCommand(commandName, cmdlist);
    567                         Main.main.undoRedo.add(cmd);
     576                        final SequenceCommand cmd = new SequenceCommand(commandName, cmdlist);
     577                        SwingUtilities.invokeLater(new Runnable() {
     578                            @Override
     579                            public void run() {
     580                                Main.main.undoRedo.add(cmd);
     581                            }
     582                        });
    568583                    }
    569584                }
Note: See TracChangeset for help on using the changeset viewer.