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); } } }
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); } }
/** Render immediately */ private void renderSync() { GraphicalEditorPart editor = mCanvas.getEditorDelegate().getGraphicalEditor(); if (editor.getReadyLayoutLib(false /*displayError*/) == null) { // Don't attempt to render when there is no ready layout library: most likely // the targets are loading/reloading. return; } disposeThumbnail(); Configuration configuration = mAlternateInput != null && mAlternateConfiguration != null ? mAlternateConfiguration : mConfiguration; ResourceResolver resolver = getResourceResolver(configuration); RenderService renderService = RenderService.create(editor, configuration, resolver); if (mIncludedWithin != null) { renderService.setIncludedWithin(mIncludedWithin); } if (mAlternateInput != null) { IAndroidTarget target = editor.getRenderingTarget(); AndroidTargetData data = null; if (target != null) { Sdk sdk = Sdk.getCurrent(); if (sdk != null) { data = sdk.getTargetData(target); } } // Construct UI model from XML DocumentDescriptor documentDescriptor; if (data == null) { documentDescriptor = new DocumentDescriptor("temp", null); // $NON-NLS-1$ } else { documentDescriptor = data.getLayoutDescriptors().getDescriptor(); } UiDocumentNode model = (UiDocumentNode) documentDescriptor.createUiNode(); model.setEditor(mCanvas.getEditorDelegate().getEditor()); model.setUnknownDescriptorProvider(editor.getModel().getUnknownDescriptorProvider()); Document document = DomUtilities.getDocument(mAlternateInput); if (document == null) { mError = "No document"; createErrorThumbnail(); return; } model.loadFromXmlNode(document); renderService.setModel(model); } else { renderService.setModel(editor.getModel()); } RenderLogger log = new RenderLogger(getDisplayName()); renderService.setLog(log); RenderSession session = renderService.createRenderSession(); Result render = session.render(1000); if (DUMP_RENDER_DIAGNOSTICS) { if (log.hasProblems() || !render.isSuccess()) { AdtPlugin.log( IStatus.ERROR, "Found problems rendering preview " + getDisplayName() + ": " + render.getErrorMessage() + " : " + log.getProblems(false)); Throwable exception = render.getException(); if (exception != null) { AdtPlugin.log(exception, "Failure rendering preview " + getDisplayName()); } } } if (render.isSuccess()) { mError = null; } else { mError = render.getErrorMessage(); if (mError == null) { mError = ""; } } if (render.getStatus() == Status.ERROR_TIMEOUT) { // TODO: Special handling? schedule update again later return; } if (render.isSuccess()) { BufferedImage image = session.getImage(); if (image != null) { createThumbnail(image); } } if (mError != null) { createErrorThumbnail(); } }