⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui.java

📁 Contiki是一个开源
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    moteType.setConfig(gui.getProjectConfig());    moteType.setProcesses(userProcesses);    moteType.setSensors(sensors);    moteType.setCoreInterfaces(coreInterfaces);    moteType.setMoteInterfaces(moteIntfClasses);    // Create simulation    logger.info("> Creating simulation");    Simulation simulation = new Simulation(gui);    simulation.setTitle("Quickstarted: " + filename);    simulation.setDelayTime(delayTime);    simulation.setSimulationTime(0);    String radioMediumClassName = null;    try {      radioMediumClassName = gui.getProjectConfig().getStringArrayValue(          GUI.class, "RADIOMEDIUMS")[0];      Class<? extends RadioMedium> radioMediumClass = gui.tryLoadClass(gui,          RadioMedium.class, radioMediumClassName);      RadioMedium radioMedium = RadioMedium.generateRadioMedium(          radioMediumClass, simulation);      simulation.setRadioMedium(radioMedium);    } catch (Exception e) {      logger.fatal(">> Failed to load radio medium, aborting: "          + radioMediumClassName + ", " + e);      return false;    }    // Create nodes    logger.info("> Creating motes");    Vector<ContikiMote> motes = new Vector<ContikiMote>();    Random random = new Random();    int nextMoteID = 1;    int nextIP = 0;    for (int i = 0; i < numberOfNodes; i++) {      ContikiMote mote = (ContikiMote) moteType.generateMote(simulation);      // Set random position      if (mote.getInterfaces().getPosition() != null) {        mote.getInterfaces().getPosition().setCoordinates(            random.nextDouble() * areaSideLength,            random.nextDouble() * areaSideLength, 0);      }      // Set unique mote ID's      if (mote.getInterfaces().getMoteID() != null) {        mote.getInterfaces().getMoteID().setMoteID(nextMoteID++);      }      // Set unique IP address      if (mote.getInterfaces().getIPAddress() != null) {        mote.getInterfaces().getIPAddress().setIPNumber((char) 10,            (char) ((nextIP / (254 * 255)) % 255),            (char) ((nextIP / 254) % 255), (char) (nextIP % 254 + 1));        nextIP++;      }      motes.add(mote);    }    // Add mote type and motes to simulation    logger.info("> Adding motes and mote type to simulation");    simulation.addMoteType(moteType);    for (Mote mote : motes) {      simulation.addMote(mote);    }    // Add simulation to GUI    logger.info("> Adding simulation to GUI");    gui.setSimulation(simulation);    // Start plugins and try to place them wisely    logger.info("> Starting plugin and showing GUI");    VisPlugin plugin = (VisPlugin) gui.startPlugin(VisState.class, gui, simulation, null);    plugin.setLocation(350, 20);    plugin = (VisPlugin) gui.startPlugin(VisTraffic.class, gui, simulation, null);    plugin.setLocation(350, 340);    plugin = (VisPlugin) gui.startPlugin(LogListener.class, gui, simulation, null);    plugin.setLocation(20, 420);    frame.setJMenuBar(gui.createMenuBar());    // Finally show GUI    frame.setVisible(true);    if (simulationStarting) {      simulation.startSimulation();    }    return true;  }  //// PROJECT CONFIG AND EXTENDABLE PARTS METHODS ////  /**   * Register new mote type class.   *   * @param moteTypeClass   *          Class to register   */  public void registerMoteType(Class<? extends MoteType> moteTypeClass) {    moteTypeClasses.add(moteTypeClass);  }  /**   * Unregister all mote type classes.   */  public void unregisterMoteTypes() {    moteTypeClasses.clear();  }  /**   * @return All registered mote type classes   */  public Vector<Class<? extends MoteType>> getRegisteredMoteTypes() {    return moteTypeClasses;  }  /**   * Register new IP distributor class   *   * @param ipDistributorClass   *          Class to register   * @return True if class was registered   */  public boolean registerIPDistributor(      Class<? extends IPDistributor> ipDistributorClass) {    // Check that vector constructor exists    try {      ipDistributorClass.getConstructor(new Class[] { Vector.class });    } catch (Exception e) {      logger.fatal("No vector constructor found of IP distributor: "          + ipDistributorClass);      return false;    }    ipDistributorClasses.add(ipDistributorClass);    return true;  }  /**   * Unregister all IP distributors.   */  public void unregisterIPDistributors() {    ipDistributorClasses.clear();  }  /**   * @return All registered IP distributors   */  public Vector<Class<? extends IPDistributor>> getRegisteredIPDistributors() {    return ipDistributorClasses;  }  /**   * Register new positioner class.   *   * @param positionerClass   *          Class to register   * @return True if class was registered   */  public boolean registerPositioner(Class<? extends Positioner> positionerClass) {    // Check that interval constructor exists    try {      positionerClass          .getConstructor(new Class[] { int.class, double.class, double.class,              double.class, double.class, double.class, double.class });    } catch (Exception e) {      logger.fatal("No interval constructor found of positioner: "          + positionerClass);      return false;    }    positionerClasses.add(positionerClass);    return true;  }  /**   * Unregister all positioner classes.   */  public void unregisterPositioners() {    positionerClasses.clear();  }  /**   * @return All registered positioner classes   */  public Vector<Class<? extends Positioner>> getRegisteredPositioners() {    return positionerClasses;  }  /**   * Register new radio medium class.   *   * @param radioMediumClass   *          Class to register   * @return True if class was registered   */  public boolean registerRadioMedium(      Class<? extends RadioMedium> radioMediumClass) {    // Check that simulation constructor exists    try {      radioMediumClass.getConstructor(new Class[] { Simulation.class });    } catch (Exception e) {      logger.fatal("No simulation constructor found of radio medium: "          + radioMediumClass);      return false;    }    radioMediumClasses.add(radioMediumClass);    return true;  }  /**   * Unregister all radio medium classes.   */  public void unregisterRadioMediums() {    radioMediumClasses.clear();  }  /**   * @return All registered radio medium classes   */  public Vector<Class<? extends RadioMedium>> getRegisteredRadioMediums() {    return radioMediumClasses;  }  /**   * Builds new project configuration using current project directories settings.   * Reregisters mote types, plugins, IP distributors, positioners and radio   * mediums. This method may still return true even if all classes could not be   * registered, but always returns false if all project directory configuration   * files were not parsed correctly.   *   * Any registered temporary plugins will be saved and reregistered.   */  public void reparseProjectConfig() throws ParseProjectsException {    if (PROJECT_DEFAULT_CONFIG_FILENAME == null) {      if (isVisualizedInApplet()) {        PROJECT_DEFAULT_CONFIG_FILENAME = "/cooja_applet.config";      } else {        PROJECT_DEFAULT_CONFIG_FILENAME = "/cooja_default.config";      }    }    // Backup temporary plugins    Vector<Class<? extends Plugin>> oldTempPlugins = (Vector<Class<? extends Plugin>>) pluginClassesTemporary        .clone();    // Reset current configuration    unregisterMoteTypes();    unregisterPlugins();    unregisterIPDistributors();    unregisterPositioners();    unregisterRadioMediums();    try {      // Read default configuration      projectConfig = new ProjectConfig(true);    } catch (FileNotFoundException e) {      logger.fatal("Could not find default project config file: "          + PROJECT_DEFAULT_CONFIG_FILENAME);      throw (ParseProjectsException) new ParseProjectsException(          "Could not find default project config file: "          + PROJECT_DEFAULT_CONFIG_FILENAME).initCause(e);    } catch (IOException e) {      logger.fatal("Error when reading default project config file: "          + PROJECT_DEFAULT_CONFIG_FILENAME);      throw (ParseProjectsException) new ParseProjectsException(          "Error when reading default project config file: "          + PROJECT_DEFAULT_CONFIG_FILENAME).initCause(e);    }    if (!isVisualizedInApplet()) {      // Append project directory configurations      for (File projectDir : currentProjectDirs) {        try {          // Append config to general config          projectConfig.appendProjectDir(projectDir);        } catch (FileNotFoundException e) {          logger.fatal("Could not find project config file: " + projectDir);          throw (ParseProjectsException) new ParseProjectsException(              "Could not find project config file: " + projectDir).initCause(e);        } catch (IOException e) {          logger.fatal("Error when reading project config file: " + projectDir);          throw (ParseProjectsException) new ParseProjectsException(              "Error when reading project config file: " + projectDir).initCause(e);        }      }      // Create class loader      try {        projectDirClassLoader = createClassLoader(currentProjectDirs);      } catch (ClassLoaderCreationException e) {        throw (ParseProjectsException) new ParseProjectsException(        "Error when creating class loader").initCause(e);      }    } else {      projectDirClassLoader = null;    }    // Register mote types    String[] moteTypeClassNames = projectConfig.getStringArrayValue(GUI.class,        "MOTETYPES");    if (moteTypeClassNames != null) {      for (String moteTypeClassName : moteTypeClassNames) {        Class<? extends MoteType> moteTypeClass = tryLoadClass(this,            MoteType.class, moteTypeClassName);        if (moteTypeClass != null) {          registerMoteType(moteTypeClass);          // logger.info("Loaded mote type class: " + moteTypeClassName);        } else {          logger.warn("Could not load mote type class: " + moteTypeClassName);        }      }    }    // Register plugins    registerPlugin(SimControl.class, false); // Not in menu    registerPlugin(SimInformation.class, false); // Not in menu    registerPlugin(MoteTypeInformation.class, false); // Not in menu    String[] pluginClassNames = projectConfig.getStringArrayValue(GUI.class,        "PLUGINS");    if (pluginClassNames != null) {      for (String pluginClassName : pluginClassNames) {        Class<? extends Plugin> pluginClass = tryLoadClass(this, Plugin.class,            pluginClassName);        if (pluginClass != null) {          registerPlugin(pluginClass);          // logger.info("Loaded plugin class: " + pluginClassName);        } else {          logger.warn("Could not load plugin class: " + pluginClassName);        }      }    }    // Reregister temporary plugins again    if (oldTempPlugins != null) {      for (Class<? extends Plugin> pluginClass : oldTempPlugins) {        if (registerTemporaryPlugin(pluginClass)) {          // logger.info("Reregistered temporary plugin class: " +          // getDescriptionOf(pluginClass));        } else {          logger.warn("Could not reregister temporary plugin class: "              + getDescriptionOf(pluginClass));        }      }    }    // Register IP distributors    String[] ipDistClassNames = projectConfig.getStringArrayValue(GUI.class,        "IP_DISTRIBUTORS");    if (ipDistClassNames != null) {      for (String ipDistClassName : ipDistClassNames) {        Class<? extends IPDistributor> ipDistClass = tryLoadClass(this,            IPDistributor.class, ipDistClassName);        if (ipDistClass != null) {          registerIPDistributor(ipDistClass);          // logger.info("Loaded IP distributor class: " + ipDistClassName);        } else {          logger              .warn("Could not load IP distributor class: " + ipDistClassName);        }      }    }    // Register positioners    String[] positionerClassNames = projectConfig.getStringArrayValue(        GUI.class, "POSITIONERS");    if (positionerClassNames != null) {      for (String positionerClassName : positionerClassNames) {        Class<? extends Positioner> positionerClass = tryLoadClass(this,            Positioner.class, positionerClassName);        if (positionerClass != null) {          registerPositioner(positionerClass);          // logger.info("Loaded positioner class: " + positionerClassName);        } else {          logger              .warn("Could not load positioner class: " + positionerClassName);        }      }    }    // Register radio mediums    String[] radioMediumsClassNames = projectConfig.getStringArrayValue(        GUI.class, "RADIOMEDIUMS");    if (radioMediumsClassNames != null) {      for (String radioMediumClassName : radioMediumsClassNames) {        Class<? extends RadioMedium> radioMediumClass = tryLoadClass(this,            RadioMedium.class, radioMediumClassName);        if (radioMediumClass != null) {          registerRadioMedium(radioMediumClass);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -