use of com.android.tools.idea.uibuilder.editor.NlEditor in project android by JetBrains.
the class EditorFixture method getLayoutEditor.
/**
* Returns a fixture around the layout editor, <b>if</b> the currently edited file
* is a layout file and it is currently showing the layout editor tab or the parameter
* requests that it be opened if necessary
*
* @param switchToTabIfNecessary if true, switch to the design tab if it is not already showing
* @throws IllegalStateException if there is no selected editor or it is not a {@link NlEditor}
*/
@NotNull
public NlEditorFixture getLayoutEditor(boolean switchToTabIfNecessary) {
if (switchToTabIfNecessary) {
selectEditorTab(Tab.DESIGN);
}
return GuiQuery.getNonNull(() -> {
FileEditor[] editors = FileEditorManager.getInstance(myFrame.getProject()).getSelectedEditors();
checkState(editors.length > 0, "no selected editors");
FileEditor selected = editors[0];
checkState(selected instanceof NlEditor, "not a %s: %s", NlEditor.class.getSimpleName(), selected);
return new NlEditorFixture(myFrame.robot(), myFrame, (NlEditor) selected);
});
}
use of com.android.tools.idea.uibuilder.editor.NlEditor in project android by JetBrains.
the class GenerateLayoutTestSkeletonAction method getSurface.
@Nullable
private static DesignSurface getSurface(@NotNull Project project) {
FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
FileEditor[] editors = fileEditorManager.getSelectedEditors();
for (FileEditor fileEditor : editors) {
if (fileEditor instanceof NlEditor) {
return ((NlEditor) fileEditor).getComponent().getSurface();
}
}
Editor editor = fileEditorManager.getSelectedTextEditor();
if (editor == null) {
return null;
}
NlPreviewManager previewManager = NlPreviewManager.getInstance(project);
if (previewManager.isWindowVisible()) {
return previewManager.getPreviewForm().getSurface();
}
PsiFile file = PsiUtilBase.getPsiFileInEditor(editor, project);
if (file == null) {
return null;
}
for (FileEditor fileEditor : fileEditorManager.getEditors(file.getVirtualFile())) {
if (fileEditor instanceof NlEditor) {
return ((NlEditor) fileEditor).getComponent().getSurface();
}
}
return null;
}
use of com.android.tools.idea.uibuilder.editor.NlEditor in project android by JetBrains.
the class NlModel method overrideConfigurationScreenSize.
/**
* Changes the configuration to use a custom device with screen size defined by xDimension and yDimension.
*/
public void overrideConfigurationScreenSize(@AndroidCoordinate int xDimension, @AndroidCoordinate int yDimension) {
Device original = myConfiguration.getDevice();
// doesn't copy tag id
Device.Builder deviceBuilder = new Device.Builder(original);
if (original != null) {
deviceBuilder.setTagId(original.getTagId());
}
deviceBuilder.setName("Custom");
deviceBuilder.setId(Configuration.CUSTOM_DEVICE_ID);
Device device = deviceBuilder.build();
for (State state : device.getAllStates()) {
Screen screen = state.getHardware().getScreen();
screen.setXDimension(xDimension);
screen.setYDimension(yDimension);
double dpi = screen.getPixelDensity().getDpiValue();
double width = xDimension / dpi;
double height = yDimension / dpi;
double diagonalLength = Math.sqrt(width * width + height * height);
screen.setDiagonalLength(diagonalLength);
screen.setSize(AvdScreenData.getScreenSize(diagonalLength));
screen.setRatio(AvdScreenData.getScreenRatio(xDimension, yDimension));
screen.setScreenRound(device.getDefaultHardware().getScreen().getScreenRound());
screen.setChin(device.getDefaultHardware().getScreen().getChin());
}
// If a custom device already exists, remove it before adding the latest one
List<Device> devices = myConfiguration.getConfigurationManager().getDevices();
boolean customDeviceReplaced = false;
for (int i = 0; i < devices.size(); i++) {
if ("Custom".equals(devices.get(i).getId())) {
devices.set(i, device);
customDeviceReplaced = true;
break;
}
}
if (!customDeviceReplaced) {
devices.add(device);
}
VirtualFile better;
State newState;
//Change the orientation of the device depending on the shape of the canvas
if (xDimension > yDimension) {
better = ConfigurationMatcher.getBetterMatch(myConfiguration, device, "Landscape", null, null);
newState = device.getState("Landscape");
} else {
better = ConfigurationMatcher.getBetterMatch(myConfiguration, device, "Portrait", null, null);
newState = device.getState("Portrait");
}
if (better != null) {
VirtualFile old = myConfiguration.getFile();
assert old != null;
Project project = mySurface.getProject();
OpenFileDescriptor descriptor = new OpenFileDescriptor(project, better, -1);
FileEditorManager manager = FileEditorManager.getInstance(project);
FileEditor selectedEditor = manager.getSelectedEditor(old);
manager.openEditor(descriptor, true);
// Switch to the same type of editor (XML or Layout Editor) in the target file
if (selectedEditor instanceof NlEditor) {
manager.setSelectedEditor(better, NlEditorProvider.DESIGNER_ID);
} else if (selectedEditor != null) {
manager.setSelectedEditor(better, TextEditorProvider.getInstance().getEditorTypeId());
}
AndroidFacet facet = AndroidFacet.getInstance(myConfiguration.getModule());
assert facet != null;
Configuration configuration = facet.getConfigurationManager().getConfiguration(better);
configuration.setEffectiveDevice(device, newState);
} else {
myConfiguration.setEffectiveDevice(device, newState);
}
}
Aggregations