| /* |
| * Copyright 2000-2009 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.intellij.uiDesigner.componentTree; |
| |
| import com.intellij.openapi.diagnostic.Logger; |
| import com.intellij.openapi.wm.StatusBar; |
| import com.intellij.uiDesigner.ErrorAnalyzer; |
| import com.intellij.uiDesigner.ErrorInfo; |
| import com.intellij.uiDesigner.designSurface.GuiEditor; |
| import com.intellij.uiDesigner.quickFixes.QuickFixManager; |
| import com.intellij.uiDesigner.radComponents.RadComponent; |
| import org.jetbrains.annotations.NotNull; |
| |
| import javax.swing.*; |
| import javax.swing.event.TreeSelectionEvent; |
| import javax.swing.event.TreeSelectionListener; |
| import javax.swing.tree.TreePath; |
| import java.awt.*; |
| |
| /** |
| * @author Anton Katilin |
| * @author Vladimir Kondratyev |
| */ |
| public final class QuickFixManagerImpl extends QuickFixManager<ComponentTree>{ |
| private static final Logger LOG = Logger.getInstance("#com.intellij.uiDesigner.componentTree.QuickFixManagerImpl"); |
| |
| public QuickFixManagerImpl(final GuiEditor editor, @NotNull final ComponentTree componentTree, final JViewport viewPort) { |
| super(editor, componentTree, viewPort); |
| myComponent.addTreeSelectionListener(new MyTreeSelectionListener()); |
| } |
| |
| @NotNull |
| protected ErrorInfo[] getErrorInfos() { |
| final RadComponent component = myComponent.getSelectedComponent(); |
| if(component == null){ |
| return ErrorInfo.EMPTY_ARRAY; |
| } |
| return ErrorAnalyzer.getAllErrorsForComponent(component); |
| } |
| |
| public Rectangle getErrorBounds() { |
| final TreePath selectionPath = myComponent.getSelectionPath(); |
| LOG.assertTrue(selectionPath != null); |
| return myComponent.getPathBounds(selectionPath); |
| } |
| |
| private final class MyTreeSelectionListener implements TreeSelectionListener{ |
| public void valueChanged(final TreeSelectionEvent e) { |
| hideIntentionHint(); |
| updateIntentionHintVisibility(); |
| |
| ErrorInfo[] errorInfos = getErrorInfos(); |
| |
| |
| final String text; |
| if (errorInfos.length > 0 && errorInfos [0].myDescription != null) { |
| text = errorInfos [0].myDescription; |
| } |
| else { |
| text = ""; |
| } |
| |
| StatusBar.Info.set(text, myComponent.getProject()); |
| } |
| } |
| } |