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

📄 gui.java

📁 传感器网络操作系统contiki。 被广泛应用于环境检测、结构健康监测等等。包括路由协议
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
  /**   * @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.   *   * @return True if external configuration files were found and parsed OK   */  public void reparseProjectConfig()  throws ParseProjectsException {    // 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);    }    // 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);    }    // 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);          // logger.info("Loaded radio medium class: " + radioMediumClassName);        } else {          logger.warn("Could not load radio medium class: "              + radioMediumClassName);        }      }    }  }  /**   * Returns the current project configuration common to the entire simulator.   *   * @return Current project configuration   */  public ProjectConfig getProjectConfig() {    return projectConfig;  }  /**   * Returns the current project directories common to the entire simulator.   *   * @return Current project directories.   */  public Vector<File> getProjectDirs() {    return currentProjectDirs;  }  // // PLUGIN METHODS ////  /**   * Show a started plugin in working area.   *   * @param plugin   *          Internal frame to add   */  public void showPlugin(VisPlugin plugin) {    int nrFrames = myDesktopPane.getAllFrames().length;    myDesktopPane.add(plugin);    // Set standard size if not specified by plugin itself    if (plugin.getWidth() <= 0 || plugin.getHeight() <= 0) {      plugin.setSize(FRAME_STANDARD_WIDTH, FRAME_STANDARD_HEIGHT);    }    // Set location if not already visible    if (!plugin.isVisible()) {      plugin.setLocation((nrFrames + 1) * FRAME_NEW_OFFSET, (nrFrames + 1)          * FRAME_NEW_OFFSET);      plugin.setVisible(true);    }    // Deselect all other plugins before selecting the new one    try {      for (JInternalFrame existingPlugin : myDesktopPane.getAllFrames()) {        existingPlugin.setSelected(false);      }      plugin.setSelected(true);    } catch (Exception e) {      // Ignore    }    // Mote plugin to front    myDesktopPane.moveToFront(plugin);  }  /**   * Remove a plugin from working area.   *   * @param plugin   *          Plugin to remove   * @param askUser   *          If plugin is the last one, ask user if we should remove current   *          simulation also?   */  public void removePlugin(Plugin plugin, boolean askUser) {    // Clear any allocated resources and remove plugin    plugin.closePlugin();    startedPlugins.remove(plugin);    // Dispose plugin if it has visualizer    if (plugin instanceof VisPlugin) {      ((VisPlugin) plugin).dispose();    }    if (getSimulation() != null && askUser && startedPlugins.isEmpty()) {      String s1 = "Remove";      String s2 = "Cancel";      Object[] options = { s1, s2 };      int n = JOptionPane.showOptionDialog(frame,          "You have an active simulation.\nDo you want to remove it?",          "Remove current simulation?", JOptionPane.YES_NO_OPTION,          JOptionPane.QUESTION_MESSAGE, null, options, s1);      if (n != JOptionPane.YES_OPTION) {        return;      }      doRemoveSimulation(false);    }  }  /**   * Starts a plugin of given plugin class with given arguments.   *   * @param pluginClass   *          Plugin class   * @param gui   *          GUI passed as argument to all plugins   * @param simulation   *          Simulation passed as argument to mote and simulation plugins   * @param mote   *          Mote passed as argument to mote plugins   * @return Start plugin if any   */  public Plugin startPlugin(Class<? extends Plugin> pluginClass, GUI gui,      Simulation simulation, Mote mote) {    // Check that plugin class is registered    if (!pluginClasses.contains(pluginClass)) {      logger.fatal("Plugin class not registered: " + pluginClass);      return null;    }    // Check that visualizer plugin is not started without GUI    if (!isVisualized()) {      try {        pluginClass.asSubclass(VisPlugin.class);        // Cast succeded, plugin is visualizer plugin!        logger.fatal("Can't start visualizer plugin (no GUI): " + pluginClass);        return null;      } catch (ClassCastException e) {      }    }    // Construct plugin depending on plugin type    Plugin newPlugin = null;    int pluginType = pluginClass.getAnnotation(PluginType.class).value();    try {      if (pluginType == PluginType.MOTE_PLUGIN) {        if (mote == null) {          logger.fatal("Can't start mote plugin (no mote selected)");          return null;        }        newPlugin = pluginClass.getConstructor(            new Class[] { Mote.class, Simulation.class, GUI.class })            .newInstance(mote, simulation, gui);        // Tag plugin with mote        newPlugin.tagWithObject(mote);      } else if (pluginType == PluginType.SIM_PLUGIN          || pluginType == PluginType.SIM_STANDARD_PLUGIN) {        if (simulation == null) {          logger.fatal("Can't start simulation plugin (no simulation)");          return null;

⌨️ 快捷键说明

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