private MediaFormat[] getEncodings() {
    if (encodings != null) return encodings;

    MediaFormat[] availableEncodings = encodingConfiguration.getAllEncodings(type);
    int encodingCount = availableEncodings.length;

    if (encodingCount < 1) encodings = MediaUtils.EMPTY_MEDIA_FORMATS;
    else {
      /*
       * The MediaFormats will be displayed by encoding (name) and clock
       * rate and EncodingConfiguration will store them that way so this
       * TableModel should better display unique encoding-clock rate
       * pairs.
       */
      HashMap<String, MediaFormat> availableEncodingSet = new HashMap<String, MediaFormat>();

      for (MediaFormat availableEncoding : availableEncodings) {
        availableEncodingSet.put(
            availableEncoding.getEncoding() + "/" + availableEncoding.getClockRateString(),
            availableEncoding);
      }
      availableEncodings = availableEncodingSet.values().toArray(MediaUtils.EMPTY_MEDIA_FORMATS);
      encodingCount = availableEncodings.length;

      encodings = new MediaFormat[encodingCount];
      System.arraycopy(availableEncodings, 0, encodings, 0, encodingCount);
      // Display the encodings in decreasing priority.
      Arrays.sort(
          encodings,
          0,
          encodingCount,
          new Comparator<MediaFormat>() {
            public int compare(MediaFormat format0, MediaFormat format1) {
              int ret =
                  encodingConfiguration.getPriority(format1)
                      - encodingConfiguration.getPriority(format0);

              if (ret == 0) {
                /*
                 * In the cases of equal priorities, display them
                 * sorted by encoding name in increasing order.
                 */
                ret = format0.getEncoding().compareToIgnoreCase(format1.getEncoding());
                if (ret == 0) {
                  /*
                   * In the cases of equal priorities and equal
                   * encoding names, display them sorted by clock
                   * rate in decreasing order.
                   */
                  ret = Double.compare(format1.getClockRate(), format0.getClockRate());
                }
              }
              return ret;
            }
          });
    }
    return encodings;
  }
예제 #2
0
  public File getFile(String filename) {
    File f = (File) filenameCache.get(filename);

    if (f == null) {
      try {
        f = (new File(directory, filename)).getCanonicalFile();
      } catch (IOException e) {
      }
      // f = new File(directory.getAbsolutePath() + File.separator + filename);
      filenameCache.put(filename, f);
    }

    return f;
  }
  public Object addNode(String id, String label, String description, Image image, String tooltip) {
    if (id == null || label == null) return null;

    HashMap map = new HashMap();
    map.put("Address", id);

    if (description.indexOf(id) > -1) description = description.substring(id.length());
    map.put("Label", label);
    map.put("Description", description);
    map.put("Tooltip", tooltip);
    map.put("Image", image);
    map.put(" ", tooltip);
    map.put("Pivot", "");
    map.put("Active", Boolean.FALSE);
    rows.add(map);
    return map;
  }
예제 #4
0
 public static String getInfo(String item) {
   return pluginInfo.get(item);
 }
예제 #5
0
 public File getFileAt(int row) {
   return (File) filenameCache.get(filenames[row]);
 }
예제 #6
0
 public Component getRegisteredComponent(String id) {
   return components.get(id);
 }
예제 #7
0
 public void registerComponent(String id, Component component) {
   components.put(id, component);
 }