Merge pull request #601 from eclipse/CHE-131
CHE-131: Fix losing focus in editor after closing 'File structure' dialog6.19.x
commit
7b6bb02e92
|
|
@ -58,5 +58,11 @@ interface FileStructure extends View<FileStructure.ActionDelegate> {
|
|||
* selected member
|
||||
*/
|
||||
void actionPerformed(Member member);
|
||||
|
||||
/**
|
||||
* Performs some actions(e.c. set cursor in previous position in active editor) when user click on escape button to close
|
||||
* file structure dialog.
|
||||
*/
|
||||
void onEscapeClicked();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@ import org.eclipse.che.ide.ext.java.client.JavaLocalizationConstant;
|
|||
import org.eclipse.che.ide.ext.java.client.navigation.factory.NodeFactory;
|
||||
import org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit;
|
||||
import org.eclipse.che.ide.ui.smartTree.KeyboardNavigationHandler;
|
||||
import org.eclipse.che.ide.ui.smartTree.NodeUniqueKeyProvider;
|
||||
import org.eclipse.che.ide.ui.smartTree.Tree;
|
||||
import org.eclipse.che.ide.ui.smartTree.NodeLoader;
|
||||
import org.eclipse.che.ide.ui.smartTree.NodeStorage;
|
||||
import org.eclipse.che.ide.ui.smartTree.NodeUniqueKeyProvider;
|
||||
import org.eclipse.che.ide.ui.smartTree.Tree;
|
||||
import org.eclipse.che.ide.ui.window.Window;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
|
@ -53,16 +53,18 @@ final class FileStructureImpl extends Window implements FileStructure {
|
|||
|
||||
private static FileStructureImplUiBinder UI_BINDER = GWT.create(FileStructureImplUiBinder.class);
|
||||
|
||||
private final NodeFactory nodeFactory;
|
||||
private final Tree tree;
|
||||
|
||||
private ActionDelegate delegate;
|
||||
|
||||
@UiField
|
||||
DockLayoutPanel treeContainer;
|
||||
@UiField
|
||||
Label showInheritedLabel;
|
||||
|
||||
private final NodeFactory nodeFactory;
|
||||
private final JavaLocalizationConstant locale;
|
||||
private final Tree tree;
|
||||
|
||||
private ActionDelegate delegate;
|
||||
@UiField(provided = true)
|
||||
final JavaLocalizationConstant locale;
|
||||
|
||||
private Predicate<Node> LEAFS = new Predicate<Node>() {
|
||||
@Override
|
||||
|
|
@ -134,6 +136,13 @@ final class FileStructureImpl extends Window implements FileStructure {
|
|||
tree.expandAll();
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void hide() {
|
||||
super.hide();
|
||||
delegate.onEscapeClicked();
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void setDelegate(ActionDelegate delegate) {
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ public class FileStructurePresenter implements FileStructure.ActionDelegate {
|
|||
|
||||
private EmbeddedTextEditorPresenter activeEditor;
|
||||
private boolean showInheritedMembers;
|
||||
private int cursorOffset;
|
||||
|
||||
@Inject
|
||||
public FileStructurePresenter(FileStructure view,
|
||||
|
|
@ -91,6 +92,7 @@ public class FileStructurePresenter implements FileStructure.ActionDelegate {
|
|||
return;
|
||||
}
|
||||
activeEditor = ((EmbeddedTextEditorPresenter)editorPartPresenter);
|
||||
cursorOffset = activeEditor.getCursorOffset();
|
||||
VirtualFile file = activeEditor.getEditorInput().getFile();
|
||||
|
||||
String projectPath = file.getProject().getProjectConfig().getPath();
|
||||
|
|
@ -141,6 +143,12 @@ public class FileStructurePresenter implements FileStructure.ActionDelegate {
|
|||
showInheritedMembers = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEscapeClicked() {
|
||||
activeEditor.setFocus();
|
||||
setCursor(activeEditor, cursorOffset);
|
||||
}
|
||||
|
||||
private void openFile(VirtualFile result, final Member member) {
|
||||
editorAgent.openEditor(result, new EditorAgent.OpenEditorCallback() {
|
||||
@Override
|
||||
|
|
@ -149,7 +157,8 @@ public class FileStructurePresenter implements FileStructure.ActionDelegate {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onEditorActivated(EditorPartPresenter editor) { }
|
||||
public void onEditorActivated(EditorPartPresenter editor) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import org.eclipse.che.ide.ext.java.shared.dto.Region;
|
|||
import org.eclipse.che.ide.ext.java.shared.dto.model.CompilationUnit;
|
||||
import org.eclipse.che.ide.ext.java.shared.dto.model.Member;
|
||||
import org.eclipse.che.ide.jseditor.client.document.Document;
|
||||
import org.eclipse.che.ide.jseditor.client.text.LinearRange;
|
||||
import org.eclipse.che.ide.jseditor.client.texteditor.EmbeddedTextEditorPresenter;
|
||||
import org.eclipse.che.ide.part.explorer.project.ProjectExplorerPresenter;
|
||||
import org.eclipse.che.ide.ui.loaders.request.LoaderFactory;
|
||||
|
|
@ -44,6 +45,7 @@ import org.mockito.runners.MockitoJUnitRunner;
|
|||
|
||||
import static org.mockito.Matchers.anyBoolean;
|
||||
import static org.mockito.Matchers.anyString;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
|
@ -189,4 +191,15 @@ public class FileStructurePresenterTest {
|
|||
|
||||
presenter.show(editorPartPresenter);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void cursorShouldBeReturnedInPreviousPositionAfterDialogClosingByEscapeButton() {
|
||||
presenter.show(editorPartPresenter);
|
||||
|
||||
presenter.onEscapeClicked();
|
||||
|
||||
verify(editorPartPresenter).setFocus();
|
||||
verify(editorPartPresenter).getDocument();
|
||||
verify(document).setSelectedRange(Matchers.<LinearRange>anyObject(), eq(true));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue