~ubuntu-branches/ubuntu/utopic/sweethome3d/utopic

« back to all changes in this revision

Viewing changes to src/com/eteks/sweethome3d/io/DefaultUserPreferences.java

  • Committer: Package Import Robot
  • Author(s): Gabriele Giacone
  • Date: 2013-03-22 23:35:34 UTC
  • mfrom: (1.1.12)
  • Revision ID: package-import@ubuntu.com-20130322233534-k9g9mz1vch0dfy4y
Tags: 4.0+dfsg-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
package com.eteks.sweethome3d.io;
21
21
 
22
22
import java.io.File;
23
 
import java.io.IOException;
24
 
import java.io.ObjectInputStream;
25
23
import java.util.ArrayList;
26
24
import java.util.Arrays;
27
25
import java.util.List;
28
26
import java.util.Locale;
29
27
 
30
 
import com.eteks.sweethome3d.model.Content;
31
28
import com.eteks.sweethome3d.model.FurnitureCatalog;
32
29
import com.eteks.sweethome3d.model.LengthUnit;
 
30
import com.eteks.sweethome3d.model.Library;
33
31
import com.eteks.sweethome3d.model.PatternsCatalog;
34
32
import com.eteks.sweethome3d.model.RecorderException;
35
33
import com.eteks.sweethome3d.model.TextureImage;
36
34
import com.eteks.sweethome3d.model.TexturesCatalog;
37
35
import com.eteks.sweethome3d.model.UserPreferences;
38
 
import com.eteks.sweethome3d.tools.ResourceURLContent;
39
36
 
40
37
/**
41
38
 * Default user preferences.
72
69
    // Build default patterns catalog
73
70
    List<TextureImage> patterns = new ArrayList<TextureImage>();
74
71
    patterns.add(new DefaultPatternTexture("foreground"));
 
72
    patterns.add(new DefaultPatternTexture("reversedHatchUp"));
 
73
    patterns.add(new DefaultPatternTexture("reversedHatchDown"));
 
74
    patterns.add(new DefaultPatternTexture("reversedCrossHatch"));
 
75
    patterns.add(new DefaultPatternTexture("background"));
75
76
    patterns.add(new DefaultPatternTexture("hatchUp"));
76
77
    patterns.add(new DefaultPatternTexture("hatchDown"));
77
78
    patterns.add(new DefaultPatternTexture("crossHatch"));
78
 
    patterns.add(new DefaultPatternTexture("background"));
79
79
    PatternsCatalog patternsCatalog = new PatternsCatalog(patterns);
80
80
    setPatternsCatalog(patternsCatalog);
81
81
    // Read other preferences from resource bundle
82
82
    setFurnitureCatalogViewedInTree(Boolean.parseBoolean(
83
83
        localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "furnitureCatalogViewedInTree")));
84
 
    setNavigationPanelVisible(Boolean.parseBoolean(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "navigationPanelVisible")));    
 
84
    setNavigationPanelVisible(Boolean.parseBoolean(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "navigationPanelVisible")));  
 
85
    setAerialViewCenteredOnSelectionEnabled(Boolean.parseBoolean(getOptionalLocalizedString(localizedPreferences, "aerialViewCenteredOnSelectionEnabled", "false")));
85
86
    setUnit(LengthUnit.valueOf(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "unit").toUpperCase(Locale.ENGLISH)));
86
87
    setRulersVisible(Boolean.parseBoolean(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "rulersVisible")));
87
88
    setGridVisible(Boolean.parseBoolean(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "gridVisible")));
88
 
    setFurnitureViewedFromTop(Boolean.parseBoolean(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "furnitureViewedFromTop")));
89
 
    setFloorColoredOrTextured(Boolean.parseBoolean(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "roomFloorColoredOrTextured")));
 
89
    // Allow furnitureViewedFromTop and roomFloorColoredOrTextured to be different according to the running OS
 
90
    String osName = System.getProperty("os.name");
 
91
    setFurnitureViewedFromTop(Boolean.parseBoolean(getOptionalLocalizedString(localizedPreferences, "furnitureViewedFromTop." + osName, 
 
92
        localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "furnitureViewedFromTop"))));
 
93
    setFloorColoredOrTextured(Boolean.parseBoolean(getOptionalLocalizedString(localizedPreferences, "roomFloorColoredOrTextured." + osName,
 
94
        localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "roomFloorColoredOrTextured"))));
90
95
    setWallPattern(patternsCatalog.getPattern(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "wallPattern")));
 
96
    String newWallPattern = localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "wallPattern");
 
97
    if (newWallPattern != null) {
 
98
      setNewWallPattern(patternsCatalog.getPattern(newWallPattern));
 
99
    }
91
100
    setNewWallThickness(Float.parseFloat(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "newWallThickness")));
92
101
    setNewWallHeight(Float.parseFloat(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "newHomeWallHeight")));
93
 
    try {
94
 
      setNewFloorThickness(Float.parseFloat(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "newFloorThickness")));
95
 
    } catch (IllegalArgumentException ex) {
96
 
      setNewFloorThickness(12);
97
 
    }
98
 
    try {
99
 
      setAutoSaveDelayForRecovery(Integer.parseInt(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "autoSaveDelayForRecovery")));
100
 
    } catch (IllegalArgumentException ex) {
101
 
      // Disable auto save
102
 
      setAutoSaveDelayForRecovery(0);
103
 
    }
 
102
    setNewFloorThickness(Float.parseFloat(getOptionalLocalizedString(localizedPreferences, "newFloorThickness", "12")));
 
103
    setCheckUpdatesEnabled(Boolean.parseBoolean(getOptionalLocalizedString(localizedPreferences, "checkUpdatesEnabled", "false")));
 
104
    setAutoSaveDelayForRecovery(Integer.parseInt(getOptionalLocalizedString(localizedPreferences, "autoSaveDelayForRecovery", "0")));
104
105
    setRecentHomes(new ArrayList<String>());
105
 
    try {
106
 
      setCurrency(localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "currency"));
107
 
    } catch (IllegalArgumentException ex) {
108
 
      // Don't use currency and prices in program
109
 
    }
 
106
    setRecentColors(new ArrayList<Integer>());
 
107
    setCurrency(getOptionalLocalizedString(localizedPreferences, "currency", null)); 
110
108
    for (String property : new String [] {"LevelName", "HomePieceOfFurnitureName", "RoomName", "LabelText"}) {
111
 
      try {
112
 
        String [] autoCompletionStrings = localizedPreferences.getLocalizedString(DefaultUserPreferences.class, "autoCompletionStrings#" + property).trim().split(",");
 
109
      String autoCompletionStringsList = getOptionalLocalizedString(localizedPreferences, "autoCompletionStrings#" + property, null);
 
110
      if (autoCompletionStringsList != null) {
 
111
        String [] autoCompletionStrings = autoCompletionStringsList.trim().split(",");
113
112
        if (autoCompletionStrings.length > 0) {
114
113
          for (int i = 0; i < autoCompletionStrings.length; i++) {
115
114
            autoCompletionStrings [i] = autoCompletionStrings [i].trim();
116
115
          }
117
116
          setAutoCompletionStrings(property, Arrays.asList(autoCompletionStrings));
118
117
        }
119
 
      } catch (IllegalArgumentException ex) {
120
 
        // No default auto completion strings
121
118
      }
122
119
    }
123
120
  }
 
121
  
 
122
  private String getOptionalLocalizedString(UserPreferences localizedPreferences, 
 
123
                                            String   resourceKey,
 
124
                                            String   defaultValue) {
 
125
    try {
 
126
      return localizedPreferences.getLocalizedString(DefaultUserPreferences.class, resourceKey);
 
127
    } catch (IllegalArgumentException ex) {
 
128
      return defaultValue;
 
129
    }
 
130
  }
124
131
 
125
132
  /**
126
133
   * Throws an exception because default user preferences can't be written 
128
135
   */
129
136
  @Override
130
137
  public void write() throws RecorderException {
131
 
    throw new RecorderException("Default user preferences can't be written");
 
138
    throw new UnsupportedOperationException("Default user preferences can't be written");
132
139
  }
133
140
 
134
141
  /**
136
143
   */
137
144
  @Override
138
145
  public boolean languageLibraryExists(String name) throws RecorderException {
139
 
    throw new RecorderException("Default user preferences can't manage language libraries");
 
146
    throw new UnsupportedOperationException("Default user preferences can't manage language libraries");
140
147
  }
141
148
 
142
149
  /**
144
151
   */
145
152
  @Override
146
153
  public void addLanguageLibrary(String name) throws RecorderException {
147
 
    throw new RecorderException("Default user preferences can't manage language libraries");
 
154
    throw new UnsupportedOperationException("Default user preferences can't manage language libraries");
148
155
  }
149
156
  
150
157
  /**
151
 
   * Throws an exception because default user preferences can't manage furniture libraries.
 
158
   * Throws an exception because default user preferences can't manage additional furniture libraries.
152
159
   */
153
160
  @Override
154
161
  public boolean furnitureLibraryExists(String name) throws RecorderException {
155
 
    throw new RecorderException("Default user preferences can't manage furniture libraries");
 
162
    throw new UnsupportedOperationException("Default user preferences can't manage furniture libraries");
156
163
  }
157
164
 
158
165
  /**
160
167
   */
161
168
  @Override
162
169
  public void addFurnitureLibrary(String name) throws RecorderException {
163
 
    throw new RecorderException("Default user preferences can't manage furniture libraries");
 
170
    throw new UnsupportedOperationException("Default user preferences can't manage furniture libraries");
164
171
  }
165
172
  
166
173
  /**
168
175
   */
169
176
  @Override
170
177
  public boolean texturesLibraryExists(String name) throws RecorderException {
171
 
    throw new RecorderException("Default user preferences can't manage textures libraries");
 
178
    throw new UnsupportedOperationException("Default user preferences can't manage textures libraries");
172
179
  }
173
180
 
174
181
  /**
176
183
   */
177
184
  @Override
178
185
  public void addTexturesLibrary(String name) throws RecorderException {
179
 
    throw new RecorderException("Default user preferences can't manage textures libraries");
180
 
  }
181
 
}
182
 
 
183
 
/**
184
 
 * A pattern built from resources.
185
 
 * @since 3.3
186
 
 */
187
 
class DefaultPatternTexture implements TextureImage {
188
 
  private static final long serialVersionUID = 1L;
189
 
 
190
 
  private final String      name;
191
 
  private transient Content image;
192
 
  
193
 
  public DefaultPatternTexture(String name) {
194
 
    this.name = name;
195
 
    this.image = new ResourceURLContent(DefaultPatternTexture.class, "resources/patterns/" + this.name + ".png");
196
 
  }
197
 
  
198
 
  /**
199
 
   * Initializes transient fields and reads pattern from <code>in</code> stream with default reading method.
200
 
   */
201
 
  private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
202
 
    in.defaultReadObject();
203
 
    try {
204
 
      this.image = new ResourceURLContent(DefaultPatternTexture.class, "resources/patterns/" + this.name + ".png");
205
 
    } catch (IllegalArgumentException ex) {
206
 
      this.image = new ResourceURLContent(DefaultPatternTexture.class, "resources/patterns/foreground.png");
207
 
    }
208
 
  }
209
 
 
210
 
  public String getName() {
211
 
    return this.name;
212
 
  }
213
 
 
214
 
  public Content getImage() {
215
 
    return this.image;
216
 
  }
217
 
  
218
 
  public float getWidth() {
219
 
    return 10;
220
 
  }
221
 
  
222
 
  public float getHeight() {
223
 
    return 10;
224
 
  }
225
 
 
226
 
  /**
227
 
   * Returns <code>true</code> if the object in parameter is equal to this pattern.
228
 
   */
229
 
  @Override
230
 
  public boolean equals(Object obj) {
231
 
    if (obj == this) {
232
 
      return true;
233
 
    } else if (obj instanceof DefaultPatternTexture) {
234
 
      DefaultPatternTexture pattern = (DefaultPatternTexture)obj;
235
 
      return pattern.name.equals(this.name);
236
 
    } else {
237
 
      return false;
238
 
    }
239
 
  }
240
 
  
241
 
  /**
242
 
   * Returns a hash code for this pattern.
243
 
   */
244
 
  @Override
245
 
  public int hashCode() {
246
 
    return this.name.hashCode();
 
186
    throw new UnsupportedOperationException("Default user preferences can't manage textures libraries");
 
187
  }
 
188
 
 
189
  /**
 
190
   * Throws an exception because default user preferences don't support libraries.
 
191
   * @since 4.0
 
192
   */
 
193
  @Override
 
194
  public List<Library> getLibraries() {
 
195
    throw new UnsupportedOperationException();
247
196
  }
248
197
}