/* * LineWidgetManager.java * * Copyright (C) 2009-12 by RStudio, Inc. * * Unless you have received this program directly from RStudio pursuant * to the terms of a commercial license agreement with RStudio, then * this program is licensed to you under the terms of version 3 of the * GNU Affero General Public License. This program is distributed WITHOUT * ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT, * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the * AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details. * */ package org.rstudio.studio.client.workbench.views.source.editors.text.ace; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; public class LineWidgetManager extends JavaScriptObject { protected LineWidgetManager() {} public native final void addLineWidget(LineWidget widget) /*-{ this.addLineWidget(widget); }-*/; public native final void removeLineWidget(LineWidget widget) /*-{ this.removeLineWidget(widget); }-*/; public native final void removeAllLineWidgets() /*-{ var lineWidgetsByRow = this.session.lineWidgets; if (lineWidgetsByRow) { var self = this; lineWidgetsByRow.forEach(function(w, i) { if (w) self.removeLineWidget(w); }); } }-*/; public native final void onWidgetChanged(LineWidget widget) /*-{ this.onWidgetChanged(widget); }-*/; public native final JsArray<LineWidget> getLineWidgets() /*-{ var lineWidgetsByRow = this.session.lineWidgets; if (!lineWidgetsByRow) return []; var lineWidgets = []; lineWidgetsByRow.forEach(function(w, i) { if (w) lineWidgets.push(w); }); return lineWidgets; }-*/; public native final LineWidget getLineWidgetForRow(int row) /*-{ if (this.session.lineWidgets && this.session.lineWidgets[row]) return this.session.lineWidgets[row]; else return null; }-*/; public native final boolean hasLineWidgets() /*-{ return this.session.lineWidgets && this.session.lineWidgets.length > 0; }-*/; public final void syncLineWidgetHeights() { JsArray<LineWidget> widgets = getLineWidgets(); for (int i = 0; i < widgets.length(); i++) { onWidgetChanged(widgets.get(i)); } } }