Package com.eteks.sweethome3d.model

Examples of com.eteks.sweethome3d.model.CatalogPieceOfFurniture


              furnitureLibrary.setDescription(getOptionalString(resource, DESCRIPTION));
              furnitureLibrary.setVersion(getOptionalString(resource, VERSION));
              furnitureLibrary.setLicense(getOptionalString(resource, LICENSE));
              furnitureLibrary.setProvider(getOptionalString(resource, PROVIDER));
            }
            CatalogPieceOfFurniture piece = super.readPieceOfFurniture(resource, index, furnitureCatalogUrl, furnitureResourcesUrlBase);
            if (piece != null) {
              // Set furniture category through dummy catalog
              FurnitureCategory category = super.readFurnitureCategory(resource, index);
              new FurnitureCatalog() { }.add(category, piece);
              furniture.add(piece);
            }
            return piece;
          }
         
          private String getOptionalString(ResourceBundle resource, String propertyKey) {
            try {
              return resource.getString(propertyKey);
            } catch (MissingResourceException ex) {
              return null;
            }
          }
        };
     
      // Search which locales are supported
      List<ZipEntry> zipEntries = getZipEntries(furnitureLibraryUrl);
      Set<Locale>    supportedLocales = new HashSet<Locale>();
      for (ZipEntry zipEntry : zipEntries) {
        String entryName = zipEntry.getName();
        if (entryName.startsWith(DefaultFurnitureCatalog.PLUGIN_FURNITURE_CATALOG_FAMILY)
            && entryName.endsWith(".properties")) {
          supportedLocales.add(getLocale(entryName));
        }
      }

      // Replace furniture by the one read
      for (CatalogPieceOfFurniture piece : furnitureLibrary.getFurniture()) {
        furnitureLibrary.deletePieceOfFurniture(piece);
      }
      for (CatalogPieceOfFurniture piece : furniture) {
        furnitureLibrary.addPieceOfFurniture(piece);
      }

      // Get furniture name and category name in each supported locale
      for (Locale locale : supportedLocales) {
        if (!FurnitureLibrary.DEFAULT_LANGUAGE.equals(locale.toString())) {         
          Locale.setDefault(locale);
          final String language = locale.toString();
          new DefaultFurnitureCatalog(new URL [] {furnitureLibraryUrl}, furnitureResourcesUrlBase) {
              @Override
              protected CatalogPieceOfFurniture readPieceOfFurniture(ResourceBundle resource,
                                                                     int index,
                                                                     URL furnitureCatalogUrl,
                                                                     URL furnitureResourcesUrlBase) {
                CatalogPieceOfFurniture piece = super.readPieceOfFurniture(resource, index, furnitureCatalogUrl, furnitureResourcesUrlBase);
                if (piece != null) {
                  FurnitureCategory category = super.readFurnitureCategory(resource, index);
                  CatalogPieceOfFurniture furnitureLibraryPiece = furniture.get(index - 1);
                  furnitureLibrary.setPieceOfFurnitureLocalizedData(furnitureLibraryPiece, language,
                      FurnitureLibrary.FURNITURE_NAME_PROPERTY, piece.getName());
                  furnitureLibrary.setPieceOfFurnitureLocalizedData(furnitureLibraryPiece, language,
                      FurnitureLibrary.FURNITURE_DESCRIPTION_PROPERTY, piece.getDescription());
                  furnitureLibrary.setPieceOfFurnitureLocalizedData(furnitureLibraryPiece, language,
View Full Code Here


    List<FurnitureCategory> categories = catalog.getCategories();
    FurnitureCategory firstCategory = categories.get(0);
    String firstCategoryEnglishName = firstCategory.getName();
    // Get the name of the first piece of furniture
    List<CatalogPieceOfFurniture> categoryFurniture = firstCategory.getFurniture();
    CatalogPieceOfFurniture firstPiece = categoryFurniture.get(0);
    String firstPieceEnglishName = firstPiece.getName();
   
    // 2. Read the furniture catalog from French locale resources
    Locale.setDefault(Locale.FRENCH);
    catalog = new DefaultFurnitureCatalog();
    // Get the french names of the first category and its first piece of furniture
    firstCategory = catalog.getCategories().get(0);
    String firstCategoryFrenchName = firstCategory.getName();
    firstPiece = firstCategory.getFurniture().get(0);
    String firstPieceFrenchName = firstPiece.getName();
    // Check categories and furniture names in English and French locale are different
    assertFalse("Same name for first category",
        firstCategoryEnglishName.equals(firstCategoryFrenchName));
    assertFalse("Same name for first piece",
        firstPieceEnglishName.equals(firstPieceFrenchName));
View Full Code Here

  public String getToolTipText(MouseEvent ev) {
    TreePath path = getPathForLocation(ev.getX(), ev.getY());
    if (this.preferences != null
        && path != null
        && path.getPathCount() == 3) {
      CatalogPieceOfFurniture piece = (CatalogPieceOfFurniture)path.getLastPathComponent();
      String tooltip = "<html><table><tr><td align='center'><b>" + piece.getName() + "</b>";
      if (piece.getCreator() != null) {
        tooltip += "<br>" + this.preferences.getLocalizedString(FurnitureCatalogTree.class,
            "tooltipCreator", piece.getCreator() + "</td></tr>");
      }
      if (piece.getIcon() instanceof URLContent) {
        try {
          // Ensure image will always be viewed in a 128x128 pixels cell
          BufferedImage image = ImageIO.read(((URLContent)piece.getIcon()).getURL());
          if (image == null) {
            return null;
          }
          int width = Math.round(128f * Math.min(1, image.getWidth() / image.getHeight()));
          int height = Math.round((float)width * image.getHeight() / image.getWidth());
          tooltip += "<tr><td width='128' height='128' align='center' valign='middle'><img width='" + width
              + "' height='" + height + "' src='"
              + ((URLContent)piece.getIcon()).getURL() + "'></td></tr>";
        } catch (IOException ex) {
          return null;
        }
      }
      return tooltip + "</table>";
View Full Code Here

        label.setText(((FurnitureCategory)value).getName());
        label.setFont(this.defaultFont);
      }
      // Else if node is a piece of furniture, change label text and icon
      else if (value instanceof CatalogPieceOfFurniture) {
        CatalogPieceOfFurniture piece = (CatalogPieceOfFurniture)value;
        label.setText(piece.getName());
        label.setIcon(getLabelIcon(tree, piece.getIcon()));
        label.setFont(piece.isModifiable()
            ? this.modifiablePieceFont : this.defaultFont);
      }
      return label;
    }
View Full Code Here

        CatalogTreeModel catalogTreeModel = this.catalogTreeModel.get();
        FurnitureCatalog catalog = (FurnitureCatalog)ev.getSource();
        if (catalogTreeModel == null) {
          catalog.removeFurnitureListener(this);
        } else {
          CatalogPieceOfFurniture piece = ev.getItem();
          switch (ev.getType()) {
            case ADD :
              if (piece.getCategory().getFurnitureCount() == 1) {
                // Fire nodes inserted for new category
                catalogTreeModel.fireTreeNodesInserted(new TreeModelEvent(catalogTreeModel,
                    new Object [] {catalog},
                    new int [] {Collections.binarySearch(catalog.getCategories(), piece.getCategory())},
                    new Object [] {piece.getCategory()}));
              } else {
                // Fire nodes inserted for new piece
                catalogTreeModel.fireTreeNodesInserted(new TreeModelEvent(catalogTreeModel,
                    new Object [] {catalog, piece.getCategory()},
                    new int [] {ev.getIndex()},
                    new Object [] {piece}));
              }
              break;
            case DELETE :
              if (piece.getCategory().getFurnitureCount() == 0) {
                // Fire nodes removed for deleted category
                catalogTreeModel.fireTreeNodesRemoved(new TreeModelEvent(catalogTreeModel,
                    new Object [] {catalog},
                    new int [] {-(Collections.binarySearch(catalog.getCategories(), piece.getCategory()) + 1)},
                    new Object [] {piece.getCategory()}));
              } else {
                // Fire nodes removed for deleted piece
                catalogTreeModel.fireTreeNodesRemoved(new TreeModelEvent(catalogTreeModel,
                    new Object [] {catalog, piece.getCategory()},
                    new int [] {ev.getIndex()},
                    new Object [] {piece}));
              }
              break;
          }
View Full Code Here

        @Override
        public String getToolTipText(MouseEvent ev) {
          // Return a tooltip for furniture pieces described in the list.
          int index = locationToIndex(ev.getPoint());
          if (index != -1) {
            CatalogPieceOfFurniture piece = (CatalogPieceOfFurniture)getModel().getElementAt(index);
            String tooltip = "<html><table><tr><td align='center'>- <b>" + piece.getCategory().getName() + "</b> -"
                + "<br><b>" + piece.getName() + "</b>";
            if (piece.getCreator() != null) {
              tooltip += "<br>" + preferences.getLocalizedString(FurnitureCatalogTree.class,
                  "tooltipCreator", piece.getCreator() + "</td></tr>");
            }
            if (piece.getIcon() instanceof URLContent) {
              try {
                // Ensure image will always be viewed in a 128x128 pixels cell
                BufferedImage image = ImageIO.read(((URLContent)piece.getIcon()).getURL());
                if (image == null) {
                  return null;
                }
                int width = Math.round(128f * Math.min(1, image.getWidth() / image.getHeight()));
                int height = Math.round((float)width * image.getHeight() / image.getWidth());
                tooltip += "<tr><td width='128' height='128' align='center' valign='middle'><img width='" + width
                    + "' height='" + height + "' src='"
                    + ((URLContent)piece.getIcon()).getURL() + "'></td></tr>";
              } catch (IOException ex) {
                return null;
              }
            }
            return tooltip + "</table>";
View Full Code Here

    public Component getListCellRendererComponent(JList list,
                                                  Object value,
                                                  int index,
                                                  boolean isSelected,
                                                  boolean cellHasFocus) {
      CatalogPieceOfFurniture piece = (CatalogPieceOfFurniture)value;
      // Get default label with its icon, background and focus colors
      JLabel label = (JLabel)super.getListCellRendererComponent(list,
          value, index, isSelected, cellHasFocus);
      label.setText(" " + piece.getName() + " ");
      label.setIcon(getLabelIcon(list, piece.getIcon()));
      label.setFont(piece.isModifiable()
          ? this.modifiablePieceFont : this.defaultFont);
      return label;
    }
View Full Code Here

   * Displays the wizard that helps to change the selected piece of furniture.
   */
  public void modifySelectedFurniture() {
    if (this.preferences != null) {
      if (this.selectedFurniture.size() > 0) {
        CatalogPieceOfFurniture piece = this.selectedFurniture.get(0);
        if (piece.isModifiable()) {
          AddedFurnitureSelector addedFurnitureListener = new AddedFurnitureSelector();
          this.preferences.getFurnitureCatalog().addFurnitureListener(addedFurnitureListener);
          new ImportedFurnitureWizardController(piece, this.preferences,
              this.viewFactory, this.contentManager).displayView(getView());
          addedFurnitureListener.selectAddedFurniture();
View Full Code Here

  /**
   * Imports piece in catalog and/or home and posts an undoable operation.
   */
  @Override
  public void finish() {
    CatalogPieceOfFurniture newPiece;
    if (isDoorOrWindow()) {
      newPiece = new CatalogDoorOrWindow(getName(), getIcon(), getModel(),
          getWidth(), getDepth(), getHeight(), getElevation(),
          isMovable(), 1, 0, new Sash [0], getColor(),
          getModelRotation(), isBackFaceShown(),
          getIconYaw(), isProportional());
    } else {
      newPiece = new CatalogPieceOfFurniture(getName(), getIcon(), getModel(),
          getWidth(), getDepth(), getHeight(), getElevation(),
          isMovable(), getColor(),
          getModelRotation(), isBackFaceShown(),
          getIconYaw(), isProportional());
    }
View Full Code Here

   */
  public boolean isPieceOfFurnitureNameValid() {
    if (this.category == null) {
      return true;
    }
    CatalogPieceOfFurniture temporaryPiece =
        new CatalogPieceOfFurniture(this.name, null, null, 0, 0, 0, 0, false, null, null, false, 0, false);
    if (this.piece != null
        && this.category == this.piece.getCategory()
        // Check piece names are equal with binary search to keep locale dependence
        && Collections.binarySearch(this.category.getFurniture(), this.piece)
              == Collections.binarySearch(this.category.getFurniture(), temporaryPiece)) {
View Full Code Here

TOP

Related Classes of com.eteks.sweethome3d.model.CatalogPieceOfFurniture

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.