Merge pull request #595 from eclipse/CHE-388
CHE-388 Don't use ugly browser prompt box to display 'Go to line' dialog window6.19.x
commit
a00c5526bf
|
|
@ -101,15 +101,6 @@ public class EditorPartStackPresenter extends PartStackPresenter implements Edit
|
|||
eventBus.addHandler(CloseNonPinnedEditorsEvent.getType(), this);
|
||||
}
|
||||
|
||||
private void removeItemFromList(@NotNull TabItem tab) {
|
||||
ListItem listItem = getListItemByTab(tab);
|
||||
|
||||
if (listItem != null) {
|
||||
listButton.removeListItem(listItem);
|
||||
items.remove(listItem);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private ListItem getListItemByTab(@NotNull TabItem tabItem) {
|
||||
for (Entry<ListItem, TabItem> entry : items.entrySet()) {
|
||||
|
|
@ -217,9 +208,11 @@ public class EditorPartStackPresenter extends PartStackPresenter implements Edit
|
|||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void onTabClose(@NotNull TabItem tab) {
|
||||
removeItemFromList(tab);
|
||||
ListItem listItem = getListItemByTab(tab);
|
||||
listButton.removeListItem(listItem);
|
||||
items.remove(listItem);
|
||||
|
||||
eventBus.fireEvent(new FileEvent(((EditorTab)tab).getFile(), CLOSE));
|
||||
eventBus.fireEvent(new FileEvent(((EditorTab) tab).getFile(), CLOSE));
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ import java.util.HashMap;
|
|||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
import static com.google.gwt.dom.client.Style.Display.BLOCK;
|
||||
import static com.google.gwt.dom.client.Style.Display.NONE;
|
||||
|
|
@ -198,11 +197,10 @@ public class EditorPartStackView extends ResizeComposite implements PartStackVie
|
|||
tabs.remove(presenter);
|
||||
contents.remove(presenter);
|
||||
|
||||
try {
|
||||
PartPresenter activePart = contents.getLast();
|
||||
selectTab(activePart);
|
||||
} catch (NoSuchElementException exception) {
|
||||
if (contents.isEmpty()) {
|
||||
getElement().getParentElement().getStyle().setDisplay(NONE);
|
||||
} else {
|
||||
selectTab(contents.getLast());
|
||||
}
|
||||
|
||||
//this hack need to force redraw dom element to apply correct styles
|
||||
|
|
|
|||
|
|
@ -108,7 +108,6 @@ public class EditorTabWidget extends Composite implements EditorTab, ContextMenu
|
|||
closeButton.addDomHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
EditorTabWidget.this.eventBus.fireEvent(new FileEvent(EditorTabWidget.this.file, FileEvent.FileOperation.CLOSE));
|
||||
delegate.onTabClose(EditorTabWidget.this);
|
||||
}
|
||||
}, ClickEvent.getType());
|
||||
|
|
@ -142,7 +141,8 @@ public class EditorTabWidget extends Composite implements EditorTab, ContextMenu
|
|||
if (part instanceof EditorPartPresenter) {
|
||||
VirtualFile changedFile = ((EditorPartPresenter)part).getEditorInput().getFile();
|
||||
FileType fileType = fileTypeRegistry.getFileTypeByFile(changedFile);
|
||||
iconPanel.setWidget(new SVGImage(fileType.getSVGImage()));
|
||||
icon = fileType.getSVGImage();
|
||||
iconPanel.setWidget(getIcon());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -74,17 +74,17 @@ public class InputDialogPresenter implements InputDialog, InputDialogView.Action
|
|||
|
||||
@Override
|
||||
public void cancelled() {
|
||||
this.view.closeDialog();
|
||||
if (this.cancelCallback != null) {
|
||||
this.cancelCallback.cancelled();
|
||||
view.closeDialog();
|
||||
if (cancelCallback != null) {
|
||||
cancelCallback.cancelled();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accepted() {
|
||||
this.view.closeDialog();
|
||||
if (this.inputCallback != null) {
|
||||
this.inputCallback.accepted(view.getValue());
|
||||
view.closeDialog();
|
||||
if (inputCallback != null) {
|
||||
inputCallback.accepted(view.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ public class InputDialogPresenter implements InputDialog, InputDialogView.Action
|
|||
@Override
|
||||
public void show() {
|
||||
isInputValid();
|
||||
this.view.showDialog();
|
||||
view.showDialog();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -137,10 +137,14 @@ class View extends Composite {
|
|||
@Override
|
||||
public void onKeyDown(KeyDownEvent event) {
|
||||
if (KeyboardEvent.KeyCode.ESC == event.getNativeEvent().getKeyCode()) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
if (delegate != null) {
|
||||
delegate.onEscapeKey();
|
||||
}
|
||||
} else if (KeyboardEvent.KeyCode.ENTER == event.getNativeEvent().getKeyCode()) {
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
if (delegate != null) {
|
||||
delegate.onEnterKey();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -162,7 +162,8 @@ public class JavaRefactoringRename implements FileEventHandler {
|
|||
|
||||
@Override
|
||||
public void onFileOperation(FileEvent event) {
|
||||
if (event.getOperationType() == CLOSE && textEditor.getDocument().getFile().getPath().equals(event.getFile().getPath())) {
|
||||
if (event.getOperationType() == CLOSE && textEditor != null && textEditor.getDocument() != null &&
|
||||
textEditor.getDocument().getFile().getPath().equals(event.getFile().getPath())) {
|
||||
isActiveLinkedEditor = false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import com.google.gwt.core.client.JsArrayString;
|
|||
import com.google.gwt.core.client.RunAsyncCallback;
|
||||
import com.google.gwt.dom.client.Document;
|
||||
import com.google.gwt.dom.client.LinkElement;
|
||||
import com.google.gwt.dom.client.Node;
|
||||
import com.google.inject.Provider;
|
||||
import com.google.inject.Singleton;
|
||||
|
||||
|
|
@ -94,6 +93,7 @@ public class OrionEditorExtension implements Provider<OrionKeyBindingModule>{
|
|||
});
|
||||
}
|
||||
});
|
||||
|
||||
// must not be delayed
|
||||
registerEditor();
|
||||
KeyMode.init();
|
||||
|
|
@ -131,6 +131,7 @@ public class OrionEditorExtension implements Provider<OrionKeyBindingModule>{
|
|||
initializationFailed(callback, "Failed to inject Orion editor", e);
|
||||
}
|
||||
}, scripts, new String[0]);
|
||||
|
||||
injectCssLink(GWT.getModuleBaseForStaticFiles() + "built-codeEdit-10.0/code_edit/built-codeEdit.css");
|
||||
}
|
||||
|
||||
|
|
@ -154,9 +155,7 @@ public class OrionEditorExtension implements Provider<OrionKeyBindingModule>{
|
|||
public void onSuccess(final JavaScriptObject[] result) {
|
||||
//use 4th element as keybinding module
|
||||
keyBindingModule = result[3].cast();
|
||||
|
||||
endConfiguration(callback);
|
||||
|
||||
}
|
||||
},
|
||||
new String[]{"orion/codeEdit",
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ import org.eclipse.che.ide.jseditor.client.texteditor.CompositeEditorWidget;
|
|||
import org.eclipse.che.ide.jseditor.client.texteditor.ContentInitializedHandler;
|
||||
import org.eclipse.che.ide.jseditor.client.texteditor.EditorWidget;
|
||||
import org.eclipse.che.ide.jseditor.client.texteditor.LineStyler;
|
||||
import org.eclipse.che.ide.ui.dialogs.DialogFactory;
|
||||
import org.eclipse.che.ide.util.browser.UserAgent;
|
||||
import org.eclipse.che.ide.util.loging.Log;
|
||||
|
||||
|
|
@ -130,6 +131,7 @@ public class OrionEditorWidget extends CompositeEditorWidget implements HasChang
|
|||
private final JavaScriptObject uiUtilsOverlay;
|
||||
private final KeymapPrefReader keymapPrefReader;
|
||||
private final ContentAssistWidgetFactory contentAssistWidgetFactory;
|
||||
private final DialogFactory dialogFactory;
|
||||
|
||||
@UiField
|
||||
SimplePanel panel;
|
||||
|
|
@ -169,6 +171,7 @@ public class OrionEditorWidget extends CompositeEditorWidget implements HasChang
|
|||
final KeymapPrefReader keymapPrefReader,
|
||||
final Provider<OrionKeyBindingModule> keyBindingModuleProvider,
|
||||
final ContentAssistWidgetFactory contentAssistWidgetFactory,
|
||||
final DialogFactory dialogFactory,
|
||||
@Assisted final List<String> editorModes,
|
||||
@Assisted final WidgetInitializedCallback widgetInitializedCallback) {
|
||||
this.keyBindingModuleProvider = keyBindingModuleProvider;
|
||||
|
|
@ -176,6 +179,7 @@ public class OrionEditorWidget extends CompositeEditorWidget implements HasChang
|
|||
this.moduleHolder = moduleHolder;
|
||||
this.keyModeInstances = keyModeInstances;
|
||||
this.eventBus = eventBus;
|
||||
this.dialogFactory = dialogFactory;
|
||||
initWidget(UIBINDER.createAndBindUi(this));
|
||||
|
||||
this.keymapPrefReader = keymapPrefReader;
|
||||
|
|
@ -193,6 +197,8 @@ public class OrionEditorWidget extends CompositeEditorWidget implements HasChang
|
|||
|
||||
codeEditWidgetModule.createEditorView(panel.getElement(), JavaScriptObject.createObject())
|
||||
.then(new EditorViewCreatedOperation(widgetInitializedCallback));
|
||||
|
||||
registerPromptFunction();
|
||||
}
|
||||
|
||||
private static JavaScriptObject getEditorSettings() {
|
||||
|
|
@ -801,4 +807,56 @@ public class OrionEditorWidget extends CompositeEditorWidget implements HasChang
|
|||
widgetInitializedCallback.initialized(OrionEditorWidget.this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers global prompt function to be accessible directly from JavaScript.
|
||||
*
|
||||
* Function promptIDE(title, text, defaultValue, callback)
|
||||
* title Dialog title
|
||||
* text The text to display in the dialog box
|
||||
* defaultValue The default value
|
||||
* callback function(value)
|
||||
* clicking "OK" will return input value
|
||||
* clicking "Cancel" will return null
|
||||
*/
|
||||
private native void registerPromptFunction() /*-{
|
||||
if (!$wnd["promptIDE"]) {
|
||||
var instance = this;
|
||||
$wnd["promptIDE"] = function(title, text, defaultValue, callback) {
|
||||
instance.@org.eclipse.che.ide.editor.orion.client.OrionEditorWidget::askLineNumber(*)(title, text, defaultValue, callback);
|
||||
};
|
||||
}
|
||||
}-*/;
|
||||
|
||||
/**
|
||||
* Custom callback to pass given value to native javascript function.
|
||||
*/
|
||||
private class InputCallback implements org.eclipse.che.ide.ui.dialogs.InputCallback {
|
||||
|
||||
private JavaScriptObject callback;
|
||||
|
||||
public InputCallback(JavaScriptObject callback) {
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public native void accepted(String value) /*-{
|
||||
var callback = this.@org.eclipse.che.ide.editor.orion.client.OrionEditorWidget.InputCallback::callback;
|
||||
callback(value);
|
||||
}-*/;
|
||||
|
||||
};
|
||||
|
||||
private void askLineNumber(String title, String text, String defaultValue, final JavaScriptObject callback) {
|
||||
if (defaultValue == null) {
|
||||
defaultValue = "";
|
||||
} else {
|
||||
// It's strange situation defaultValue.length() returns 'undefined' but must return a number.
|
||||
// Reinitialise the variable resolves the problem.
|
||||
defaultValue = "" + defaultValue;
|
||||
}
|
||||
|
||||
dialogFactory.createInputDialog(title, text, defaultValue, 0, defaultValue.length(), new InputCallback(callback), null).show();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35907,14 +35907,35 @@ define('orion/editorCommands',[
|
|||
var line;
|
||||
var editor = this.editor || that.editor;
|
||||
var model = editor.getModel();
|
||||
|
||||
if (data.parameters && data.parameters.valueFor('line')) { //$NON-NLS-0$
|
||||
line = data.parameters.valueFor('line'); //$NON-NLS-0$
|
||||
} else {
|
||||
line = model.getLineAtOffset(editor.getCaretOffset());
|
||||
line = prompt(messages.gotoLinePrompt, line + 1);
|
||||
if (line) {
|
||||
line = parseInt(line, 10);
|
||||
editor.onGotoLine(line - 1, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
line = model.getLineAtOffset(editor.getCaretOffset());
|
||||
|
||||
// try to use promptIDE(title, text, defaultValue, callback) function
|
||||
if (window["promptIDE"]) {
|
||||
window["promptIDE"](messages.gotoLineTooltip, messages.gotoLinePrompt, line + 1,
|
||||
function(value) {
|
||||
if (value) {
|
||||
value = parseInt(value, 10);
|
||||
}
|
||||
if (value) {
|
||||
editor.onGotoLine(value - 1, 0);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// use browser based
|
||||
line = prompt(messages.gotoLinePrompt, line + 1);
|
||||
if (line) {
|
||||
line = parseInt(line, 10);
|
||||
}
|
||||
if (line) {
|
||||
editor.onGotoLine(line - 1, 0);
|
||||
|
|
@ -42268,4 +42289,4 @@ define('embeddedEditor/builder/embeddedEditor',[
|
|||
});
|
||||
return CodeEdit;
|
||||
});
|
||||
define('orion/codeEdit', ['embeddedEditor/builder/embeddedEditor'], function(p) { return p; });
|
||||
define('orion/codeEdit', ['embeddedEditor/builder/embeddedEditor'], function(p) { return p; });
|
||||
|
|
|
|||
Loading…
Reference in New Issue