diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderPreviewList.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderPreviewList.java | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderPreviewList.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderPreviewList.java deleted file mode 100644 index 2bcdba382..000000000 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/layout/gle2/RenderPreviewList.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Eclipse Public License, Version 1.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.eclipse.org/org/documents/epl-v10.php - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.ide.eclipse.adt.internal.editors.layout.gle2; - -import com.android.annotations.NonNull; -import com.android.ide.eclipse.adt.AdtPlugin; -import com.android.ide.eclipse.adt.AdtUtils; -import com.android.ide.eclipse.adt.internal.editors.formatting.EclipseXmlPrettyPrinter; -import com.android.ide.eclipse.adt.internal.editors.layout.configuration.Configuration; -import com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationChooser; -import com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationDescription; -import com.android.sdklib.devices.Device; -import com.google.common.base.Charsets; -import com.google.common.collect.Lists; -import com.google.common.io.Files; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.QualifiedName; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -/** A list of render previews */ -class RenderPreviewList { - /** Name of file saved in project directory storing previews */ - private static final String PREVIEW_FILE_NAME = "previews.xml"; //$NON-NLS-1$ - - /** Qualified name for the per-project persistent property include-map */ - private final static QualifiedName PREVIEW_LIST = new QualifiedName(AdtPlugin.PLUGIN_ID, - "previewlist");//$NON-NLS-1$ - - private final IProject mProject; - private final List<ConfigurationDescription> mList = Lists.newArrayList(); - - private RenderPreviewList(@NonNull IProject project) { - mProject = project; - } - - /** - * Returns the {@link RenderPreviewList} for the given project - * - * @param project the project the list is associated with - * @return a {@link RenderPreviewList} for the given project, never null - */ - @NonNull - public static RenderPreviewList get(@NonNull IProject project) { - RenderPreviewList list = null; - try { - list = (RenderPreviewList) project.getSessionProperty(PREVIEW_LIST); - } catch (CoreException e) { - // Not a problem; we will just create a new one - } - - if (list == null) { - list = new RenderPreviewList(project); - try { - project.setSessionProperty(PREVIEW_LIST, list); - } catch (CoreException e) { - AdtPlugin.log(e, null); - } - } - - return list; - } - - private File getManualFile() { - return new File(AdtUtils.getAbsolutePath(mProject).toFile(), PREVIEW_FILE_NAME); - } - - void load(Collection<Device> deviceList) throws IOException { - File file = getManualFile(); - if (file.exists()) { - load(file, deviceList); - } - } - - void save() throws IOException { - deleteFile(); - if (!mList.isEmpty()) { - File file = getManualFile(); - save(file); - } - } - - private void save(File file) throws IOException { - //Document document = DomUtilities.createEmptyPlainDocument(); - Document document = DomUtilities.createEmptyDocument(); - if (document != null) { - for (ConfigurationDescription description : mList) { - description.toXml(document); - } - String xml = EclipseXmlPrettyPrinter.prettyPrint(document, true); - Files.write(xml, file, Charsets.UTF_8); - } - } - - void load(File file, Collection<Device> deviceList) throws IOException { - mList.clear(); - - String xml = Files.toString(file, Charsets.UTF_8); - Document document = DomUtilities.parseDocument(xml, true); - if (document == null || document.getDocumentElement() == null) { - return; - } - List<Element> elements = DomUtilities.getChildren(document.getDocumentElement()); - for (Element element : elements) { - ConfigurationDescription description = ConfigurationDescription.fromXml( - mProject, element, deviceList); - if (description != null) { - mList.add(description); - } - } - } - - /** - * Create a list of previews for the given canvas that matches the internal - * configuration preview list - * - * @param canvas the associated canvas - * @return a new list of previews linked to the given canvas - */ - @NonNull - List<RenderPreview> createPreviews(LayoutCanvas canvas) { - if (mList.isEmpty()) { - return new ArrayList<RenderPreview>(); - } - List<RenderPreview> previews = Lists.newArrayList(); - RenderPreviewManager manager = canvas.getPreviewManager(); - ConfigurationChooser chooser = canvas.getEditorDelegate().getGraphicalEditor() - .getConfigurationChooser(); - - Configuration chooserConfig = chooser.getConfiguration(); - for (ConfigurationDescription description : mList) { - Configuration configuration = Configuration.create(chooser); - configuration.setDisplayName(description.displayName); - configuration.setActivity(description.activity); - configuration.setLocale( - description.locale != null ? description.locale : chooserConfig.getLocale(), - true); - // TODO: Make sure this layout isn't in some v-folder which is incompatible - // with this target! - configuration.setTarget( - description.target != null ? description.target : chooserConfig.getTarget(), - true); - configuration.setTheme( - description.theme != null ? description.theme : chooserConfig.getTheme()); - configuration.setDevice( - description.device != null ? description.device : chooserConfig.getDevice(), - true); - configuration.setDeviceState( - description.state != null ? description.state : chooserConfig.getDeviceState(), - true); - configuration.setNightMode( - description.nightMode != null ? description.nightMode - : chooserConfig.getNightMode(), true); - configuration.setUiMode( - description.uiMode != null ? description.uiMode : chooserConfig.getUiMode(), true); - - //configuration.syncFolderConfig(); - configuration.getFullConfig().set(description.folder); - - RenderPreview preview = RenderPreview.create(manager, configuration); - - preview.setDescription(description); - previews.add(preview); - } - - return previews; - } - - void remove(@NonNull RenderPreview preview) { - ConfigurationDescription description = preview.getDescription(); - if (description != null) { - mList.remove(description); - } - } - - boolean isEmpty() { - return mList.isEmpty(); - } - - void add(@NonNull RenderPreview preview) { - Configuration configuration = preview.getConfiguration(); - ConfigurationDescription description = - ConfigurationDescription.fromConfiguration(mProject, configuration); - // RenderPreviews can have display names that aren't reflected in the configuration - description.displayName = preview.getDisplayName(); - mList.add(description); - preview.setDescription(description); - } - - void delete() { - mList.clear(); - deleteFile(); - } - - private void deleteFile() { - File file = getManualFile(); - if (file.exists()) { - file.delete(); - } - } -} |