Alexander Wels has posted comments on this change.

Change subject: userportal, webadmin: ScrollableTabBar
......................................................................


Patch Set 9:

(48 comments)

Addressed all of Vojtechs concerns.

....................................................
File 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/ScrollableTabBarPresenterWidget.java
Line 14: import com.gwtplatform.mvp.client.PresenterWidget;
Line 15: import com.gwtplatform.mvp.client.View;
Line 16: 
Line 17: /**
Line 18:  * Scroll-able tab widget that presents scrolling buttons when the 
window is not large enough to contain all the
Done
Line 19:  * tabs. The scroll buttons allow the user to scroll so they can see 
tabs that they could not see otherwise. The
Line 20:  * widget also provide a drop down menu list of all the tabs.
Line 21:  */
Line 22: public class ScrollableTabBarPresenterWidget extends 
PresenterWidget<ScrollableTabBarPresenterWidget.ViewDef>


Line 24: 
Line 25:     /**
Line 26:      * View definition.
Line 27:      */
Line 28:     public interface ViewDef extends View, TabWidgetHandler, IsWidget {
Done
Line 29:         /**
Line 30:          * recalculate the needed sizes.
Line 31:          */
Line 32:         void recalculateSize();


Line 37:         /**
Line 38:          * Set the offset.
Line 39:          * @param left The offset in pixels.
Line 40:          */
Line 41:         void setOffset(int left);
Done
Line 42:         /**
Line 43:          * Set how many pixels the scroll panel should scroll when a 
button is clicked.
Line 44:          * @param scrollDistance The distance in pixels.
Line 45:          */


Line 86:                     resizeHandlerRegistration.removeHandler();
Line 87:                 }
Line 88:             }
Line 89:         }));
Line 90:         resizeHandlerRegistration = Window.addResizeHandler(new 
ResizeHandler() {
Basically when you resize the window, the splitter generates the offset change 
event. So if this widget handled the offset change event as well as the resize 
event, it would have to do all the calculations twice, which is something I 
wanted to avoid. Unfortunately for a very short period of time I need to handle 
resize events (remove the resize handler and you will see what I mean, the 
initial load won't look right). Once the offset change event setup is working 
properly we can dispense with the resize handler.

I put a comment in that hopefully explains this better.
Line 91:             @Override
Line 92:             public void onResize(ResizeEvent resizeEvent) {
Line 93:                 getView().recalculateSize();
Line 94:                 getView().showScrollButtons();


....................................................
File 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/view/ScrollableTabBarView.java
Line 21: import com.google.gwt.user.client.ui.PushButton;
Line 22: import com.google.gwt.user.client.ui.Widget;
Line 23: import com.google.inject.Inject;
Line 24: 
Line 25: public class ScrollableTabBarView extends Composite implements 
ScrollableTabBarPresenterWidget.ViewDef {
Switched to AbstractView and resorted to attach handler.
Line 26: 
Line 27:     public interface TabBarUiBinder extends UiBinder<Widget, 
ScrollableTabBarView> {
Line 28:     }
Line 29: 


Line 23: import com.google.inject.Inject;
Line 24: 
Line 25: public class ScrollableTabBarView extends Composite implements 
ScrollableTabBarPresenterWidget.ViewDef {
Line 26: 
Line 27:     public interface TabBarUiBinder extends UiBinder<Widget, 
ScrollableTabBarView> {
Done
Line 28:     }
Line 29: 
Line 30:     /**
Line 31:      * element style name of 'min-width' that gets manipulated in the 
view.


Line 46: 
Line 47:     /**
Line 48:      * The CSS styles available to be modified inside the view.
Line 49:      */
Line 50:     interface Style extends CssResource {
That is correct, I am not a big fan of the huge application resources all over 
the place.
Line 51:         /**
Line 52:          * The style associated with each drop down item.
Line 53:          *
Line 54:          * @return The style name as a string regardless of 
obfuscation level.


Line 52:          * The style associated with each drop down item.
Line 53:          *
Line 54:          * @return The style name as a string regardless of 
obfuscation level.
Line 55:          */
Line 56:         String dropdownItems();
Done
Line 57: 
Line 58:         /**
Line 59:          * The style of the outer item container.
Line 60:          * @return The style name as a string regardless of 
obfuscation level.


Line 124:      *
Line 125:      * @param binder The UI-binder definition used to instantiate the 
widget.
Line 126:      */
Line 127:     @Inject
Line 128:     public ScrollableTabBarView(final TabBarUiBinder binder) {
Done
Line 129:         initWidget(binder.createAndBindUi(this));
Line 130:         configureAutoHidePartners();
Line 131:     }
Line 132: 


Line 138:     }
Line 139: 
Line 140:     @Override
Line 141:     public void addTabWidget(IsWidget tabWidget, int index) {
Line 142:         Widget listWidget = copyWidget(tabWidget);
I needed a generic way to get the tabs into the drop down, this did the trick 
without knowing a lot about the originals.
Line 143:         if (listWidget != null) {
Line 144:             widgetBar.insert(tabWidget, index);
Line 145:             dropdownPanel.insert(listWidget, index);
Line 146:         }


Line 144:             widgetBar.insert(tabWidget, index);
Line 145:             dropdownPanel.insert(listWidget, index);
Line 146:         }
Line 147:         recalculateWidgetBarMinWidth();
Line 148:         showScrollButtons();
Done
Line 149:     }
Line 150: 
Line 151:     @Override
Line 152:     public void removeTabWidget(IsWidget tabWidget) {


Line 149:     }
Line 150: 
Line 151:     @Override
Line 152:     public void removeTabWidget(IsWidget tabWidget) {
Line 153:         widgetBar.remove(tabWidget);
Yes, we do, I forgot to add the code to do that as it is not trivial to 
determine which one to remove.
Line 154:         recalculateWidgetBarMinWidth();
Line 155:         showScrollButtons();
Line 156:     }
Line 157: 


Line 155:         showScrollButtons();
Line 156:     }
Line 157: 
Line 158:     /**
Line 159:      * Copy the passed in widget WITHOUT the event handlers. Then add 
a click handler to the new widget
Done
Line 160:      * and add the 'dropdownItems' style to them. Also left align the 
text in the widget as it is now part
Line 161:      * of a list and it looks strange not being left aligned.
Line 162:      *
Line 163:      * @param widget The original widget, which is unchanged after 
this call.


Line 162:      *
Line 163:      * @param widget The original widget, which is unchanged after 
this call.
Line 164:      * @return The new widget with click handler and dropdownItems 
style.
Line 165:      */
Line 166:     private Widget copyWidget(final IsWidget widget) {
Done
Line 167:         HTML newWidget = null;
Line 168:         if (widget != null) {
Line 169:             newWidget = new HTML();
Line 170:             
newWidget.setHTML(widget.asWidget().getElement().getString().replaceAll("class=\".*?\"",
 //$NON-NLS-1$


Line 198:      * Calculate the minimum width needed to display all the tabs on 
the bar. This works even if there are some
Line 199:      * right floating tabs.
Line 200:      */
Line 201:     private void recalculateWidgetBarMinWidth() {
Line 202:         // Add 1 for browsers that don't report width properly.
It does, but not significantly. Basically the switch to showing the scrollable 
buttons happens one pixel earlier than strictly necessary, I haven't noticed 
that being a problem in regular usage.
Line 203:         
widgetBar.getElement().getStyle().setProperty(MIN_WIDTH_STYLE, 
calculateWidgetMinWidthNeeded() + 1, Unit.PX);
Line 204:     }
Line 205: 
Line 206:     /**


Line 328:      */
Line 329:     private boolean isScrollingNecessary() {
Line 330:         int currentWidth = asWidget().getOffsetWidth();
Line 331:         int minWidth = getWidgetMinWidthNeeded();
Line 332:         return minWidth > 0 && currentWidth > 0 && currentWidth <= 
minWidth + 1;
You are right, I fixed it.
Line 333:     }
Line 334: 
Line 335:     /**
Line 336:      * Adjust the scroll by a number of pixels. The value can be 
positive or negative.


Line 395:         showScrollButtons();
Line 396:     }
Line 397: 
Line 398:     @Override
Line 399:     public void addToSlot(Object slot, IsWidget content) {
Not if we extend from AbstractView.
Line 400:         recalculateSize();
Line 401:     }
Line 402: 
Line 403:     @Override


....................................................
File 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/action/AbstractActionPanel.java
Line 95:     private final FlowPanel contentPanel;
Line 96: 
Line 97:     // List of action buttons managed by this action panel
Line 98:     private final List<ActionButtonDefinition<T>> actionButtonList = 
new ArrayList<ActionButtonDefinition<T>>();
Line 99:     // List of buttons in the tool-bar.
Action button list relates to the context menu, the action toolbar button list 
is the menu. They are two different sets of definitions and do overlap somewhat 
but some items in the context menu don't exist in the toolbar and vice versa. I 
will see I can name them more appropriately.
Line 100:     private final List<ActionButtonDefinition<T>> 
actionToolbarButtonList = new ArrayList<ActionButtonDefinition<T>>();
Line 101: 
Line 102:     private final SearchableModelProvider<T, ?> dataProvider;
Line 103:     private final EventBus eventBus;


Line 140:      * Constructor.
Line 141:      * @param modelProvider The data provider.
Line 142:      * @param gwtEventBus The GWT event bus.
Line 143:      */
Line 144:     public AbstractActionPanel(SearchableModelProvider<T, ?> 
modelProvider, EventBus gwtEventBus) {
Done
Line 145:         this.dataProvider = modelProvider;
Line 146:         this.eventBus = gwtEventBus;
Line 147:         contextPopupPanel = new PopupPanel(true);
Line 148:         contextMenuBar = new MenuBar(true);


Line 190:                 }
Line 191:                 initializeCascadeMenuPanel();
Line 192:             }
Line 193:         });
Line 194:         resizeHandlerRegistration = Window.addResizeHandler(new 
ResizeHandler() {
See my explanation in the other file.
Line 195:             @Override
Line 196:             public void onResize(ResizeEvent resizeEvent) {
Line 197:                 initializeCascadeMenuPanel();
Line 198:             }


Line 239:         boolean foundEdge = false;
Line 240:         if (contentPanel.getWidgetCount() > 1) {
Line 241:             for (int i = 0; i < contentPanel.getWidgetCount() - 1; 
i++) {
Line 242:                 Widget widget = contentPanel.getWidget(i);
Line 243:                 widget.setVisible(true); //temporarily show the 
widget, so we get the actual width of the widget.
I don't think it will, as this executes after the button definitions have been 
passed in, and therefore all the visible buttons are right. Definitely 
something to test with users with fewer permissions.
Line 244:                 if (foundEdge || (widgetWidth + 
widget.getOffsetWidth() > currentWidth)) {
Line 245:                     widget.setVisible(false);
Line 246:                     actionToolbarButtonList.get(i).setCascaded(true);
Line 247:                     foundEdge = true;


Line 298:         // Add the button to the action panel
Line 299:         if 
(buttonDef.getCommandLocation().equals(CommandLocation.ContextAndToolBar)
Line 300:                 || 
buttonDef.getCommandLocation().equals(CommandLocation.OnlyFromToolBar)) {
Line 301:             copyStyleToCascadeButton(newActionButton);
Line 302:             contentPanel.insert(newActionButton.asWidget(), 
contentPanel.getWidgetCount() - 1);
That is correct
Line 303:             actionToolbarButtonList.add(buttonDef);
Line 304:         }
Line 305: 
Line 306:         // Add the button to the context menu


Line 361:      * Calculate the width of all the sibling widgets to this widget 
(this is for the case where there are extra
Line 362:      * buttons and other things on the same row).<br />
Line 363:      * <br />
Line 364:      * <b>NOTE</b> This calculation breaks down if the siblings have 
left or/and right margins. The reported width
Line 365:      * is inaccurate if margins exist.
Yes, I have had to modify some of the css to change the margins into padding.
Line 366:      * @return The total width of all the sibling widgets in pixels.
Line 367:      */
Line 368:     private int calculateSiblingWidth() {
Line 369:         int width = 0;


Line 367:      */
Line 368:     private int calculateSiblingWidth() {
Line 369:         int width = 0;
Line 370:         Widget parent = actionPanel.getParent();
Line 371:         if (parent != null && parent instanceof HasWidgets) {
Done
Line 372:             Iterator<Widget> widgetIterator = ((HasWidgets) 
parent).iterator();
Line 373:             while (widgetIterator.hasNext()) {
Line 374:                 Widget widget = widgetIterator.next();
Line 375:                 if (widget != actionPanel) {


Line 411:         String styleString = ((Widget) 
newActionButton).getStyleName();
Line 412:         if (styleString != null) {
Line 413:             String[] stylesArray = styleString.split(" "); 
//$NON-NLS-1$
Line 414:             for (String singleStyle : stylesArray) {
Line 415:                 if (!singleStyle.startsWith(GWT_PREFIX)) {
I don't know the styling of the buttons ahead of time, and we want to make the 
items in the menu look like the action buttons.
Line 416:                     cascadeButton.addStyleName(singleStyle);
Line 417:                 }
Line 418:             }
Line 419:         }


Line 583:      * @param buttonDef The {@code ActionButtonDefinition} used to 
determine the new state of the button.
Line 584:      */
Line 585:     void updateActionButton(ActionButton button, 
ActionButtonDefinition<T> buttonDef) {
Line 586:         
button.asWidget().setVisible(buttonDef.isAccessible(getSelectedItems())
Line 587:                 && buttonDef.isVisible(getSelectedItems()) && 
!buttonDef.isCascaded());
Same answer as above, the one set is not identical to the other, one contains 
context menu items, the other does not.
Line 588:         button.setEnabled(buttonDef.isEnabled(getSelectedItems()));
Line 589:         button.setTitle(buttonDef.getButtonToolTip() != null ? 
buttonDef.getButtonToolTip() : buttonDef.getTitle());
Line 590:     }
Line 591: 


....................................................
File 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/AbstractHeadlessTabPanel.java
Line 16:         this.tabWidgetHandler = tabWidgetHandler;
Line 17:     }
Line 18: 
Line 19:     @Override
Line 20:     public void addTabWidget(IsWidget tabWidget, int index) {
Well I had no choice, but definitely an improvement.
Line 21:         if (tabWidgetHandler != null) {
Line 22:             tabWidgetHandler.addTabWidget(tabWidget, index);
Line 23:         }
Line 24:     }


....................................................
File 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/ModelBoundTab.java
Line 13: import com.google.gwt.event.shared.GwtEvent;
Line 14: import com.google.gwt.event.shared.HasHandlers;
Line 15: 
Line 16: public class ModelBoundTab extends SimpleTab implements HasHandlers {
Line 17:     final EventBus eventBus;
Done
Line 18: 
Line 19:     public ModelBoundTab(final ModelBoundTabData tabData, 
AbstractTabPanel tabPanel, EventBus eventBus) {
Line 20:         super(tabData, tabPanel);
Line 21:         setAlign(tabData.getAlign());


Line 47:                 // Update tab accessibility when 'IsAvailable' 
property changes
Line 48:                 if ("IsAvailable".equals(pcArgs.propertyName)) { 
//$NON-NLS-1$
Line 49:                     boolean isAvailable = 
modelProvider.getModel().getIsAvailable();
Line 50:                     setAccessible(isAvailable);
Line 51:                     TabAccessibleChangeEvent.fire(ModelBoundTab.this, 
ModelBoundTab.this);
Done
Line 52:                 }
Line 53:             }
Line 54:         });
Line 55:     }


....................................................
File 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/tab/RepeatingPushButton.java
Line 16:     /**
Line 17:      * The constructor
Line 18:      */
Line 19:     public RepeatingPushButton() {
Line 20:         super();
In this particular case since I am extending a GWT class, I wanted to 
explicitly call super. You are right it is a matter of taste.
Line 21:         timer = new Timer() {
Line 22:             @Override
Line 23:             public void run() {
Line 24:                 RepeatingPushButton.super.onClick();


....................................................
File 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/extended/template/ExtendedTemplateSubTabPanelPresenter.java
Line 26:     @ProxyCodeSplit
Line 27:     public interface ProxyDef extends 
Proxy<ExtendedTemplateSubTabPanelPresenter> {
Line 28:     }
Line 29: 
Line 30:     public interface ViewDef extends TabView, 
HasUiHandlers<TabWidgetHandler> {
I knew you would figure out a better way of doing this :)
Line 31:     }
Line 32: 
Line 33:     @RequestTabs
Line 34:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/extended/vm/ExtendedVmSubTabPanelPresenter.java
Line 25:     @ProxyCodeSplit
Line 26:     public interface ProxyDef extends 
Proxy<ExtendedVmSubTabPanelPresenter> {
Line 27:     }
Line 28: 
Line 29:     public interface ViewDef extends TabView, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 30:     }
Line 31: 
Line 32:     @RequestTabs
Line 33:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/AbstractSubTabPanelView.java
Line 11: 
Line 12: public abstract class AbstractSubTabPanelView extends 
AbstractTabPanelView implements HasUiHandlers<TabWidgetHandler> {
Line 13: 
Line 14:     protected void setTabBar(IsWidget content) {
Line 15:         ((SimpleTabPanel) getTabPanel()).setTabBar(content);
I don't think I can tighten the contract as other things can sub class 
AbstractTabPanelView which may or may not return a SimpleTabPanel. I have 
implemented the instanceof check.
Line 16:     }
Line 17: 
Line 18:     @Override
Line 19:     public void setInSlot(Object slot, IsWidget content) {


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/cluster/ClusterSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<ClusterSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/DataCenterSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<DataCenterSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/disk/DiskSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends Proxy<DiskSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/gluster/VolumeSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<VolumeSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/host/HostSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends Proxy<HostSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/network/NetworkSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<NetworkSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/pool/PoolSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends Proxy<PoolSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/profile/VnicProfileSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<VnicProfileSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/provider/ProviderSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<ProviderSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/quota/QuotaSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends Proxy<QuotaSubTabPanelPresenter> 
{
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/storage/StorageSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<StorageSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/template/TemplateSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<TemplateSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/user/UserSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends Proxy<UserSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/virtualMachine/VirtualMachineSubTabPanelPresenter.java
Line 24:     @ProxyCodeSplit
Line 25:     public interface ProxyDef extends 
Proxy<VirtualMachineSubTabPanelPresenter> {
Line 26:     }
Line 27: 
Line 28:     public interface ViewDef extends TabView, DynamicTabPanel, 
HasUiHandlers<TabWidgetHandler> {
Done
Line 29:     }
Line 30: 
Line 31:     @RequestTabs
Line 32:     public static final Type<RequestTabsHandler> TYPE_RequestTabs = 
new Type<RequestTabsHandler>();


....................................................
File 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/AbstractSubTabPanelView.java
Line 11: 
Line 12: public abstract class AbstractSubTabPanelView extends 
AbstractTabPanelView implements HasUiHandlers<TabWidgetHandler> {
Line 13: 
Line 14:     protected void setTabBar(IsWidget content) {
Line 15:         ((SimpleTabPanel) getTabPanel()).setTabBar(content);
Same response.
Line 16:     }
Line 17: 
Line 18:     @Override
Line 19:     public void setInSlot(Object slot, IsWidget content) {


-- 
To view, visit http://gerrit.ovirt.org/21716
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I63dddb3c0026ea3a5c13c3d18daebd02e13b1043
Gerrit-PatchSet: 9
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Alexander Wels <aw...@redhat.com>
Gerrit-Reviewer: Einav Cohen <eco...@redhat.com>
Gerrit-Reviewer: Greg Sheremeta <gsher...@redhat.com>
Gerrit-Reviewer: Vojtech Szocs <vsz...@redhat.com>
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to