Changeset 289:358261d4b196 in finroc_tools_finstruct-java


Ignore:
Timestamp:
25.05.2020 23:01:55 (8 months ago)
Author:
Max Reichardt <mreichardt@…>
Branch:
default
Phase:
public
Message:

Adapts remote component creation to change in finroc_core - and improves CreateModule dialog to show runtime parameters on creation of components in more constellations

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • FinstructRightPanel.java

    r254 r289  
    647647                try { 
    648648                    // wait for creation and show element properties in panel 
    649                     String error = runtime.getAdminInterface().createModule(selectedCreateAction, componentCreateName.toString(), ((RemoteFrameworkElement)rootElement).getRemoteHandle(), componentConstructorParameters); 
    650                     if (error.length() > 0) { 
    651                         Finstruct.showErrorMessage("Error creating component: " + error, false, false); 
     649                    Object error = runtime.getAdminInterface().createModule(selectedCreateAction, componentCreateName.toString(), ((RemoteFrameworkElement)rootElement).getRemoteHandle(), componentConstructorParameters); 
     650                    if (error instanceof String) { 
     651                        Finstruct.showErrorMessage("Error creating component: " + error.toString(), false, false); 
    652652                    } else { 
    653653                        createdElementToSwitchTo = componentCreateName.toString(); 
  • dialogs/CreateInterfacesDialog.java

    r254 r289  
    316316                            parameters.get(2).setValue(task.shared); 
    317317                            parameters.get(3).setValue(task.globallyUniqueLinks); 
    318                             String error = rr.getAdminInterface().createModule(createInterfaceAction, task.name, element.getRemoteHandle(), parameters); 
    319                             if (error.length() == 0 && task.portCreationList.getSize() > 0) { 
     318                            Object result = rr.getAdminInterface().createModule(createInterfaceAction, task.name, element.getRemoteHandle(), parameters); 
     319                            boolean error = result instanceof String; 
     320                            if ((!error) && task.portCreationList.getSize() > 0) { 
    320321                                setPortListCount++; 
    321                             } else if (error.length() > 0) { 
     322                            } else if (error) { 
    322323                                Finstruct.showErrorMessage("Error creating interfaces: " + error, false, false); 
    323324                            } 
  • dialogs/CreateModuleDialog.java

    r285 r289  
    8686    //private final ArrayList<RemoteCreateModuleAction> filteredActions = new ArrayList<RemoteCreateModuleAction>(); 
    8787 
    88     /** Name of Created module */ 
    89     private String created; 
     88    /** Name of Created module, as sent to remote runtime environment */ 
     89    private String createdModuleExpectedName; 
     90 
     91    /** Handle of created module (if available) */ 
     92    private Integer createdModuleHandle; 
    9093 
    9194    /** Created Module - set when changed event is received via runtime listener */ 
     
    9497    /** Tree model of remote framework elements */ 
    9598    private InterfaceTreeModel treeModel; 
     99 
     100    /** Any active timer */ 
     101    private Timer timer; 
    96102 
    97103    public CreateModuleDialog(Frame owner) { 
     
    235241            String error = ""; 
    236242 
    237             boolean timerActive = false; 
    238243            try { 
    239244                treeModel.addTreeModelListener(this); 
    240                 created = name.getText(); 
    241                 error = rr.getAdminInterface().createModule(rcma, name.getText(), parent.getRemoteHandle(), spl); 
     245                createdModuleExpectedName = name.getText(); 
     246                createdModuleHandle = null; 
     247                createdModule = null; 
     248                timer = null; 
     249                Object result = rr.getAdminInterface().createModule(rcma, name.getText(), parent.getRemoteHandle(), spl); 
     250                if (result instanceof Integer) { 
     251                    createdModuleHandle = (Integer)result; 
     252                } else if (result instanceof String) { 
     253                    error = result.toString(); 
     254                } 
    242255                if (error.length() == 0) { 
    243                     Timer timer = new Timer(2000, this); 
     256                    timer = new Timer(2000, this); 
    244257                    timer.setRepeats(false); 
    245258                    timer.start(); 
    246                     timerActive = true; 
    247259                } 
    248260 
    249261            } finally { 
    250                 if (!timerActive) { 
     262                if (timer == null) { 
    251263                    treeModel.removeTreeModelListener(this); 
    252264                } 
     
    260272                Finstruct.showErrorMessage("Couldn't find & edit created element", false, false); 
    261273                treeModel.removeTreeModelListener(this); 
    262             } 
     274            } else { 
     275                // show edit dialog 
     276                try { 
     277                    new ParameterEditDialog(this).show(createdModule, false, false); 
     278                } catch (Exception exception) { 
     279                    Finstruct.showErrorMessage(exception, true); 
     280                } 
     281                close(); 
     282            } 
     283            timer = null; 
    263284        } 
    264285    } 
     
    308329        if (e.getTreePath().getLastPathComponent() == parent) { 
    309330            for (Object o : e.getChildren()) { 
    310                 if (o instanceof RemoteFrameworkElement && o.toString().equals(created)) { 
     331                if (o instanceof RemoteFrameworkElement && ((createdModuleHandle == null && o.toString().equals(createdModuleExpectedName) || (createdModuleHandle != null && ((RemoteFrameworkElement)o).getRemoteHandle() == createdModuleHandle.intValue())))) { 
    311332                    createdModule = (RemoteFrameworkElement)o; 
    312333                    treeModel.removeTreeModelListener(this); 
    313334 
    314                     // possibly show edit dialog 
    315                     try { 
    316                         new ParameterEditDialog(this).show(createdModule, false, false); 
    317                     } catch (Exception exception) { 
    318                         Finstruct.showErrorMessage(exception, true); 
     335                    if (timer != null) { 
     336                        timer.stop(); 
     337                        timer = new Timer(300, this); 
     338                        timer.setRepeats(false); 
     339                        timer.start(); 
     340                    } else { 
     341                        Finstruct.showErrorMessage("No timer active", false, false); 
    319342                    } 
    320                     close(); 
     343 
    321344                    return; 
    322345                } 
Note: See TracChangeset for help on using the changeset viewer.