use of com.google.gwt.core.client.Scheduler.ScheduledCommand in project rstudio by rstudio.
the class XTermWidget method onLoad.
@Override
protected void onLoad() {
super.onLoad();
if (!initialized_) {
initialized_ = true;
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
terminal_.fit();
terminal_.focus();
terminalReady();
}
});
}
}
use of com.google.gwt.core.client.Scheduler.ScheduledCommand in project rstudio by rstudio.
the class SourcePane method onLoad.
@Override
protected void onLoad() {
super.onLoad();
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute() {
onResize();
}
});
}
use of com.google.gwt.core.client.Scheduler.ScheduledCommand in project rstudio by rstudio.
the class Source method onSelection.
public void onSelection(SelectionEvent<Integer> event) {
if (activeEditor_ != null)
activeEditor_.onDeactivate();
activeEditor_ = null;
if (event.getSelectedItem() >= 0) {
activeEditor_ = editors_.get(event.getSelectedItem());
activeEditor_.onActivate();
// let any listeners know this tab was activated
events_.fireEvent(new DocTabActivatedEvent(activeEditor_.getPath(), activeEditor_.getId()));
// event
if (initialized_ && !isDebugSelectionPending()) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute() {
if (activeEditor_ != null)
activeEditor_.focus();
}
});
} else if (isDebugSelectionPending()) {
// we're debugging, so send focus to the console instead of the
// editor
commands_.activateConsole().execute();
clearPendingDebugSelection();
}
}
if (initialized_)
manageCommands();
}
use of com.google.gwt.core.client.Scheduler.ScheduledCommand in project rstudio by rstudio.
the class Source method doOpenSourceFile.
private void doOpenSourceFile(final FileSystemItem file, final TextFileType fileType, final FilePosition position, final String pattern, final int navMethod, final boolean forceHighlightMode) {
// if the navigation should happen in another window, do that instead
NavigationResult navResult = windowManager_.navigateToFile(file, position, navMethod);
// we navigated externally, just skip this
if (navResult.getType() == NavigationResult.RESULT_NAVIGATED)
return;
// we're about to open in this window--if it's the main window, focus it
if (SourceWindowManager.isMainSourceWindow() && Desktop.isDesktop())
Desktop.getFrame().bringMainFrameToFront();
final boolean isDebugNavigation = navMethod == NavigationMethods.DEBUG_STEP || navMethod == NavigationMethods.DEBUG_END;
final CommandWithArg<EditingTarget> editingTargetAction = new CommandWithArg<EditingTarget>() {
@Override
public void execute(EditingTarget target) {
if (position != null) {
SourcePosition endPosition = null;
if (isDebugNavigation) {
DebugFilePosition filePos = (DebugFilePosition) position.cast();
endPosition = SourcePosition.create(filePos.getEndLine() - 1, filePos.getEndColumn() + 1);
if (Desktop.isDesktop() && navMethod != NavigationMethods.DEBUG_END)
Desktop.getFrame().bringMainFrameToFront();
}
navigate(target, SourcePosition.create(position.getLine() - 1, position.getColumn() - 1), endPosition);
} else if (pattern != null) {
Position pos = target.search(pattern);
if (pos != null) {
navigate(target, SourcePosition.create(pos.getRow(), 0), null);
}
}
}
private void navigate(final EditingTarget target, final SourcePosition srcPosition, final SourcePosition srcEndPosition) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
if (navMethod == NavigationMethods.DEBUG_STEP) {
target.highlightDebugLocation(srcPosition, srcEndPosition, true);
} else if (navMethod == NavigationMethods.DEBUG_END) {
target.endDebugHighlighting();
} else {
// force highlight mode if requested
if (forceHighlightMode)
target.forceLineHighlighting();
// now navigate to the new position
boolean highlight = navMethod == NavigationMethods.HIGHLIGHT_LINE && !uiPrefs_.highlightSelectedLine().getValue();
target.navigateToPosition(srcPosition, false, highlight);
}
}
});
}
};
if (navResult.getType() == NavigationResult.RESULT_RELOCATE) {
server_.getSourceDocument(navResult.getDocId(), new ServerRequestCallback<SourceDocument>() {
@Override
public void onResponseReceived(final SourceDocument doc) {
editingTargetAction.execute(addTab(doc, OPEN_REPLAY));
}
@Override
public void onError(ServerError error) {
globalDisplay_.showErrorMessage("Document Tab Move Failed", "Couldn't move the tab to this window: \n" + error.getMessage());
}
});
return;
}
final CommandWithArg<FileSystemItem> action = new CommandWithArg<FileSystemItem>() {
@Override
public void execute(FileSystemItem file) {
openFile(file, fileType, editingTargetAction);
}
};
// highlight in place.
if (isDebugNavigation) {
setPendingDebugSelection();
for (int i = 0; i < editors_.size(); i++) {
EditingTarget target = editors_.get(i);
String path = target.getPath();
if (path != null && path.equalsIgnoreCase(file.getPath())) {
// the file's open; just update its highlighting
if (navMethod == NavigationMethods.DEBUG_END) {
target.endDebugHighlighting();
} else {
view_.selectTab(i);
editingTargetAction.execute(target);
}
return;
}
}
// open a file just to turn off debug highlighting in the file!
if (navMethod == NavigationMethods.DEBUG_END)
return;
}
// Warning: event.getFile() can be null (e.g. new Sweave document)
if (file != null && file.getLength() < 0) {
// If the file has no size info, stat the file from the server. This
// is to prevent us from opening large files accidentally.
server_.stat(file.getPath(), new ServerRequestCallback<FileSystemItem>() {
@Override
public void onResponseReceived(FileSystemItem response) {
action.execute(response);
}
@Override
public void onError(ServerError error) {
// Couldn't stat the file? Proceed anyway. If the file doesn't
// exist, we'll let the downstream code be the one to show the
// error.
action.execute(file);
}
});
} else {
action.execute(file);
}
}
use of com.google.gwt.core.client.Scheduler.ScheduledCommand in project rstudio by rstudio.
the class AceEditor method doSetCode.
private void doSetCode(String code, boolean preserveCursorPosition) {
// Filter out Escape characters that might have snuck in from an old
// bug in 0.95. We can choose to remove this when 0.95 ships, hopefully
// any documents that would be affected by this will be gone by then.
code = code.replaceAll("", "");
// Normalize newlines -- convert all of '\r', '\r\n', '\n\r' to '\n'.
code = StringUtil.normalizeNewLines(code);
final AceEditorNative ed = widget_.getEditor();
if (preserveCursorPosition) {
final Position cursorPos;
final int scrollTop, scrollLeft;
cursorPos = ed.getSession().getSelection().getCursor();
scrollTop = ed.getRenderer().getScrollTop();
scrollLeft = ed.getRenderer().getScrollLeft();
// Setting the value directly on the document prevents undo/redo
// stack from being blown away
widget_.getEditor().getSession().getDocument().setValue(code);
ed.getSession().getSelection().moveCursorTo(cursorPos.getRow(), cursorPos.getColumn(), false);
ed.getRenderer().scrollToY(scrollTop);
ed.getRenderer().scrollToX(scrollLeft);
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
ed.getRenderer().scrollToY(scrollTop);
ed.getRenderer().scrollToX(scrollLeft);
}
});
} else {
ed.getSession().setValue(code);
ed.getSession().getSelection().moveCursorTo(0, 0, false);
}
}
Aggregations