package org.openflexo.fib.editor.controller; import java.awt.event.MouseEvent; import java.util.Observer; import javax.swing.ImageIcon; import org.openflexo.fib.controller.FIBController; import org.openflexo.fib.model.FIBBrowser; import org.openflexo.fib.model.FIBButton; import org.openflexo.fib.model.FIBCheckBox; import org.openflexo.fib.model.FIBComponent; import org.openflexo.fib.model.FIBDropDown; import org.openflexo.fib.model.FIBLabel; import org.openflexo.fib.model.FIBNumber; import org.openflexo.fib.model.FIBPanel; import org.openflexo.fib.model.FIBRadioButtonList; import org.openflexo.fib.model.FIBSplitPanel; import org.openflexo.fib.model.FIBTabPanel; import org.openflexo.fib.model.FIBTable; import org.openflexo.fib.model.FIBTextArea; import org.openflexo.fib.model.FIBTextField; public class FIBBrowserController extends FIBController implements Observer { private FIBEditorController editorController; public FIBBrowserController(FIBComponent rootComponent, FIBEditorController editorController) { super(rootComponent); this.editorController = editorController; editorController.addObserver(this); } public FIBComponent getSelectedComponent() { return editorController.getSelectedObject(); } public void setSelectedComponent(FIBComponent selectedComponent) { editorController.setSelectedObject(selectedComponent); } public ImageIcon iconFor(FIBComponent component) { if (component.isRootComponent()) { return FIBEditorIconLibrary.ROOT_COMPONENT_ICON; } else if (component instanceof FIBTabPanel) { return FIBEditorIconLibrary.TABS_ICON; } else if (component instanceof FIBPanel) { return FIBEditorIconLibrary.PANEL_ICON; } else if (component instanceof FIBSplitPanel) { return FIBEditorIconLibrary.SPLIT_PANEL_ICON; } else if (component instanceof FIBCheckBox) { return FIBEditorIconLibrary.CHECKBOX_ICON; } else if (component instanceof FIBLabel) { return FIBEditorIconLibrary.LABEL_ICON; } else if (component instanceof FIBTable) { return FIBEditorIconLibrary.TABLE_ICON; } else if (component instanceof FIBBrowser) { return FIBEditorIconLibrary.TREE_ICON; } else if (component instanceof FIBTextArea) { return FIBEditorIconLibrary.TEXTAREA_ICON; } else if (component instanceof FIBTextField) { return FIBEditorIconLibrary.TEXTFIELD_ICON; } else if (component instanceof FIBNumber) { return FIBEditorIconLibrary.NUMBER_ICON; } else if (component instanceof FIBDropDown) { return FIBEditorIconLibrary.DROPDOWN_ICON; } else if (component instanceof FIBRadioButtonList) { return FIBEditorIconLibrary.RADIOBUTTON_ICON; } else if (component instanceof FIBButton) { return FIBEditorIconLibrary.BUTTON_ICON; } return null; } public String textFor(FIBComponent component) { if (component.getName() != null) { return component.getName() + " (" + component.getClass().getSimpleName() + ")"; } else if (component.getIdentifier() != null) { return component.getIdentifier() + " (" + component.getClass().getSimpleName() + ")"; } else { return "<" + component.getClass().getSimpleName() + ">"; } } public void rightClick(FIBComponent component, MouseEvent event) { editorController.getContextualMenu().displayPopupMenu(component, getRootView().getJComponent(), event); } }