Example usage for com.intellij.openapi.fileEditor FileEditorManager openEditor

List of usage examples for com.intellij.openapi.fileEditor FileEditorManager openEditor

Introduction

In this page you can find the example usage for com.intellij.openapi.fileEditor FileEditorManager openEditor.

Prototype

@NotNull
public abstract List<FileEditor> openEditor(@NotNull OpenFileDescriptor descriptor, boolean focusEditor);

Source Link

Document

Must be called from <a href="https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html">EDT</a>.

Usage

From source file:com.android.tools.idea.actions.AndroidShowNavigationEditor.java

License:Apache License

public void showNavigationEditor(@Nullable Project project, @Nullable Module module, final String dir,
        final String file) {
    if (project == null) {
        return;/*from  ww  w . j a  va  2s. c o  m*/
    }
    if (module == null) {
        return;
    }
    VirtualFile baseDir = project.getBaseDir();
    if (baseDir == null) { // this happens when we have the 'default' project; can't launch nav editor from here
        return;
    }
    VirtualFile navFile = NavigationEditorUtils.getNavigationFile(baseDir, module.getName(), dir, file);
    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, navFile, 0);
    FileEditorManager manager = FileEditorManager.getInstance(project);
    manager.openEditor(descriptor, true);
    manager.setSelectedEditor(navFile, NavigationEditorProvider.ID);
}

From source file:com.android.tools.idea.configurations.RenderOptionsMenuBuilder.java

License:Apache License

@NotNull
public RenderOptionsMenuBuilder addPreferXmlOption() {
    myGroup.addAction(new CheckboxAction("Prefer XML Editor") {
        @Override//from  www.j a  v  a 2s  .co  m
        public boolean isSelected(AnActionEvent e) {
            return mySettings.getGlobalState().isPreferXmlEditor();
        }

        @Override
        public void setSelected(AnActionEvent e, boolean state) {
            mySettings.getGlobalState().setPreferXmlEditor(state);

            // Switch to XML editor
            Module module = myContext.getModule();
            VirtualFile file = myContext.getVirtualFile();
            if (module != null && file != null) {
                Project project = module.getProject();
                FileEditorManager manager = FileEditorManager.getInstance(project);
                if (state) {
                    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, file, 0);
                    manager.openEditor(descriptor, true);
                } else {
                    FileEditorManager.getInstance(project).setSelectedEditor(file,
                            AndroidDesignerEditorProvider.ANDROID_DESIGNER_ID);
                }
            }
        }
    }).setAsSecondary(true);

    return this;
}

From source file:com.android.tools.idea.uibuilder.model.NlModel.java

License:Apache License

/**
 * Changes the configuration to use a custom device with screen size defined by xDimension and yDimension.
 *//*from w w  w. j  a v a2s  . c o m*/
public void overrideConfigurationScreenSize(@AndroidCoordinate int xDimension,
        @AndroidCoordinate int yDimension) {
    Device original = myConfiguration.getDevice();
    Device.Builder deviceBuilder = new Device.Builder(original); // doesn't copy tag id
    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);
    }
}

From source file:org.cordovastudio.actions.ShowStoryboardEditorAction.java

License:Apache License

public void showNavigationEditor(@Nullable Project project, final String dir, final String file) {
    if (project == null) {
        return;//from   w w w . ja  v  a2 s. co m
    }
    final VirtualFile baseDir = project.getBaseDir();
    if (baseDir == null) { // this happens when we have the 'default' project, we can't launch nav editor here
        return;
    }
    final String relativePathOfNavDir = ".navigation" + "/" + dir;
    VirtualFile navFile = baseDir.findFileByRelativePath(relativePathOfNavDir + "/" + file);
    if (navFile == null) {
        navFile = ApplicationManager.getApplication().runWriteAction(new Computable<VirtualFile>() {
            @Override
            public VirtualFile compute() {
                try {
                    VirtualFile dir = mkDirs(baseDir, relativePathOfNavDir);
                    return dir.createChildData(null, file);
                } catch (IOException e) {
                    assert false;
                    return null;
                }

            }
        });
    }
    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, navFile, 0);
    FileEditorManager manager = FileEditorManager.getInstance(project);
    manager.openEditor(descriptor, true);
    manager.setSelectedEditor(navFile, CordovaStoryboardEditorProvider.ID);
}

From source file:org.cordovastudio.editors.storyboard.model.CordovaRootComponent.java

License:Apache License

public void launchLayoutEditor() {
    if (myLayoutFile != null) {
        Project project = myRenderingParameters.getProject();
        VirtualFile virtualFile = myLayoutFile.getVirtualFile();
        OpenFileDescriptor descriptor = new OpenFileDescriptor(project, virtualFile, 0);
        FileEditorManager manager = FileEditorManager.getInstance(project);
        manager.openEditor(descriptor, true);
        manager.setSelectedEditor(virtualFile, CordovaDesignerEditorProvider.CORDOVA_DESIGNER_ID);
    }//from   ww  w .j ava2 s. c o  m
}

From source file:org.exbin.deltahex.intellij.DeltaHexFileEditor.java

License:Apache License

public DeltaHexFileEditor(Project project) {
    this.project = project;
    editorPanel = new JPanel();
    initComponents();//w w w  . java 2s .c o m

    preferences = getPreferences();

    codeArea = new CodeArea();
    codeArea.setPainter(new HighlightNonAsciiCodeAreaPainter(codeArea));
    codeArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
    codeArea.getCaret().setBlinkRate(300);
    statusPanel = new HexStatusPanel();
    registerEncodingStatus(statusPanel);
    encodingsHandler = new EncodingsHandler(new TextEncodingStatusApi() {
        @Override
        public String getEncoding() {
            return encodingStatus.getEncoding();
        }

        @Override
        public void setEncoding(String encodingName) {
            codeArea.setCharset(Charset.forName(encodingName));
            encodingStatus.setEncoding(encodingName);
            preferences.setValue(DeltaHexFileEditor.PREFERENCES_ENCODING_SELECTED, encodingName);
        }
    });

    propertyChangeSupport = new PropertyChangeSupport(this);
    // CodeAreaUndoHandler(codeArea);
    // undoHandler = new HexUndoIntelliJHandler(codeArea, project, this);
    undoHandler = new CodeAreaUndoHandler(codeArea);
    loadFromPreferences();

    undoHandler.addUndoUpdateListener(new BinaryDataUndoUpdateListener() {
        @Override
        public void undoCommandPositionChanged() {
            codeArea.repaint();
            updateUndoState();
            notifyModified();
        }

        @Override
        public void undoCommandAdded(final BinaryDataCommand command) {
            updateUndoState();
            notifyModified();
        }
    });
    updateUndoState();

    getSegmentsRepository();
    setNewData();
    CodeAreaOperationCommandHandler commandHandler = new CodeAreaOperationCommandHandler(codeArea, undoHandler);
    codeArea.setCommandHandler(commandHandler);
    editorPanel.add(codeArea, BorderLayout.CENTER);
    editorPanel.add(statusPanel, BorderLayout.SOUTH);
    registerHexStatus(statusPanel);
    goToHandler = new GoToHandler(codeArea);

    codeArea.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
            maybeShowPopup(e);
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            maybeShowPopup(e);
        }

        private void maybeShowPopup(MouseEvent e) {
            if (e.isPopupTrigger()) {
                JPopupMenu popupMenu = createContextMenu();
                popupMenu.show(e.getComponent(), e.getX(), e.getY());
            }
        }
    });

    codeTypeComboBox.setSelectedIndex(codeArea.getCodeType().ordinal());

    editorPanel.getActionMap().put("copy-to-clipboard", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            codeArea.copy();
        }
    });
    editorPanel.getActionMap().put("cut-to-clipboard", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            codeArea.cut();
        }
    });
    editorPanel.getActionMap().put("paste-from-clipboard", new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            codeArea.paste();
        }
    });

    applyFromCodeArea();

    int metaMaskValue;
    try {
        metaMaskValue = java.awt.Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
    } catch (java.awt.HeadlessException ex) {
        metaMaskValue = java.awt.Event.CTRL_MASK;
    }

    metaMask = metaMaskValue;

    codeArea.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent keyEvent) {
            int modifiers = keyEvent.getModifiers();
            if (modifiers == metaMask) {
                int keyCode = keyEvent.getKeyCode();
                switch (keyCode) {
                case KeyEvent.VK_F: {
                    showSearchPanel(false);
                    break;
                }
                case KeyEvent.VK_G: {
                    goToHandler.getGoToLineAction().actionPerformed(null);
                    break;
                }
                case KeyEvent.VK_S: {
                    saveFileButtonActionPerformed(null);
                    break;
                }
                }
            }

            if (modifiers == InputEvent.CTRL_MASK && keyEvent.getKeyCode() == KeyEvent.VK_Z) {
                try {
                    if (undoHandler.canUndo()) {
                        undoHandler.performUndo();
                    }
                } catch (BinaryDataOperationException e) {
                    e.printStackTrace();
                }
            } else if (modifiers == (InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK)
                    && keyEvent.getKeyCode() == KeyEvent.VK_Z) {
                try {
                    if (undoHandler.canRedo()) {
                        undoHandler.performRedo();
                    }
                } catch (BinaryDataOperationException e) {
                    e.printStackTrace();
                }
            }
        }
    });

    MessageBus messageBus = project.getMessageBus();
    MessageBusConnection connect = messageBus.connect();
    connect.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
        @Override
        public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
        }

        @Override
        public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
            if (virtualFile != null) {
                if (!releaseFile()) {
                    // TODO Intercept close event instead of editor recreation
                    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, virtualFile, 0);
                    FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
                    List<FileEditor> editors = fileEditorManager.openEditor(descriptor, true);
                    fileEditorManager.setSelectedEditor(virtualFile,
                            DeltaHexWindowProvider.DELTAHEX_EDITOR_TYPE_ID);
                    for (FileEditor fileEditor : editors) {
                        if (fileEditor instanceof DeltaHexFileEditor) {
                            ((DeltaHexFileEditor) fileEditor).reopenFile(virtualFile, codeArea.getData(),
                                    undoHandler);
                        }
                    }
                    closeData(false);
                } else {
                    closeData(true);
                }
            }

            virtualFile = null;
        }

        @Override
        public void selectionChanged(@NotNull FileEditorManagerEvent event) {
        }
    });
}

From source file:org.exbin.deltahex.intellij.FileOpenAsHexAction.java

License:Apache License

@Override
public void actionPerformed(AnActionEvent event) {
    final Project project = event.getProject();
    if (project == null) {
        return;//from www .ja v  a 2s  .  com
    }

    FileChooserDescriptor chooserDescriptor = new FileChooserDescriptor(true, false, true, false, false, false);
    VirtualFile virtualFile = FileChooser.chooseFile(chooserDescriptor, project, null);
    if (virtualFile != null && virtualFile.isValid() && !virtualFile.isDirectory()) {
        DeltaHexVirtualFile deltaHexVirtualFile = new DeltaHexVirtualFile(virtualFile);
        OpenFileDescriptor descriptor = new OpenFileDescriptor(project, deltaHexVirtualFile, 0);
        FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
        List<FileEditor> editors = fileEditorManager.openEditor(descriptor, true);
        fileEditorManager.setSelectedEditor(virtualFile, DeltaHexWindowProvider.DELTAHEX_EDITOR_TYPE_ID);
        for (FileEditor fileEditor : editors) {
            if (fileEditor instanceof DeltaHexFileEditor) {
                ((DeltaHexFileEditor) fileEditor).openFile(deltaHexVirtualFile);
            }
        }
    }
}

From source file:org.exbin.deltahex.intellij.OpenAsHexAction.java

License:Apache License

@Override
public void actionPerformed(AnActionEvent event) {
    final Project project = event.getProject();
    if (project == null) {
        return;/*from   w w w.  ja  va 2s  . c o  m*/
    }
    VirtualFile virtualFile = event.getData(PlatformDataKeys.VIRTUAL_FILE);
    if (virtualFile != null && virtualFile.isValid() && !virtualFile.isDirectory()) {
        DeltaHexVirtualFile deltaHexVirtualFile = new DeltaHexVirtualFile(virtualFile);
        OpenFileDescriptor descriptor = new OpenFileDescriptor(project, deltaHexVirtualFile, 0);
        FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
        List<FileEditor> editors = fileEditorManager.openEditor(descriptor, true);
        fileEditorManager.setSelectedEditor(virtualFile, DeltaHexWindowProvider.DELTAHEX_EDITOR_TYPE_ID);
        for (FileEditor fileEditor : editors) {
            if (fileEditor instanceof DeltaHexFileEditor) {
                ((DeltaHexFileEditor) fileEditor).openFile(deltaHexVirtualFile);
            }
        }
    }
}

From source file:org.moe.designer.configurations.ConfigurationAction.java

License:Apache License

protected void pickedBetterMatch(@NotNull VirtualFile file, @NotNull VirtualFile old) {
    // Switch files, and leave this configuration alone
    Module module = myRenderContext.getModule();
    assert module != null;
    Project project = module.getProject();
    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, file, -1);
    FileEditorManager manager = FileEditorManager.getInstance(project);
    FileEditor selectedEditor = manager.getSelectedEditor(old);
    List<FileEditor> editors = manager.openEditor(descriptor, true);

    // Switch to the same type of editor (XML or Layout Editor) in the target file
    if (selectedEditor instanceof IOSDesignerEditor) {
        manager.setSelectedEditor(file, IXMLFileEditorProvider.ANDROID_DESIGNER_ID);
    } else if (selectedEditor != null) {
        manager.setSelectedEditor(file, TextEditorProvider.getInstance().getEditorTypeId());

        // Proactively switch to the new editor right away in the layout XML preview, if applicable
        if (!editors.isEmpty()) {
            for (FileEditor editor : editors) {
                if (editor instanceof TextEditor && editor.getComponent().isShowing()) {
                    //TODO: implement preview window if it is important
                    //            AndroidLayoutPreviewToolWindowManager previewManager = AndroidLayoutPreviewToolWindowManager.getInstance(project);
                    //            previewManager.notifyFileShown((TextEditor)editor, true);
                    break;
                }//from  ww w .ja  va2s.  c o m
            }
        }
    }
}

From source file:org.moe.designer.rendering.RenderOptionsMenuBuilder.java

License:Apache License

@NotNull
public RenderOptionsMenuBuilder addPreferXmlOption() {
    myGroup.addAction(new CheckboxAction("Prefer XML Editor") {
        @Override/*from  ww  w .  ja v a2 s.c o  m*/
        public boolean isSelected(AnActionEvent e) {
            return mySettings.getGlobalState().isPreferXmlEditor();
        }

        @Override
        public void setSelected(AnActionEvent e, boolean state) {
            mySettings.getGlobalState().setPreferXmlEditor(state);

            // Switch to XML editor
            Module module = myContext.getModule();
            VirtualFile file = myContext.getVirtualFile();
            if (module != null && file != null) {
                Project project = module.getProject();
                FileEditorManager manager = FileEditorManager.getInstance(project);
                if (state) {
                    OpenFileDescriptor descriptor = new OpenFileDescriptor(project, file, 0);
                    manager.openEditor(descriptor, true);
                } else {
                    FileEditorManager.getInstance(project).setSelectedEditor(file,
                            IXMLFileEditorProvider.ANDROID_DESIGNER_ID);
                }
            }
        }
    }).setAsSecondary(true);

    return this;
}