Changeset 8301

Show
Ignore:
Timestamp:
09/12/08 09:06:26 (5 years ago)
Author:
stedwar2
Message:

Moved the "Generate Component" menu command to be a workbench action instead of an editor-contributed action.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • ossiedev/branches/jsnyder/ComponentProject/src/edu/vt/ossie/actionSets/GenerateComponent.java

    r7811 r8301  
    1515import org.eclipse.jface.dialogs.MessageDialog; 
    1616import org.eclipse.jface.viewers.ISelection; 
    17 import org.eclipse.ui.IEditorActionDelegate; 
    18 import org.eclipse.ui.IEditorPart; 
     17import org.eclipse.ui.IPageListener; 
     18import org.eclipse.ui.IPartListener; 
     19import org.eclipse.ui.IWorkbenchPage; 
     20import org.eclipse.ui.IWorkbenchPart; 
     21import org.eclipse.ui.IWorkbenchWindow; 
     22import org.eclipse.ui.IWorkbenchWindowActionDelegate; 
    1923import org.python.core.PyObject; 
    2024import org.python.core.PyString; 
     
    3135 */ 
    3236public class GenerateComponent 
    33     implements IEditorActionDelegate 
     37    implements IWorkbenchWindowActionDelegate, 
     38    IPageListener, 
     39    IPartListener 
    3440{ 
    3541    //~ Public Methods ........................................................ 
    3642 
    37         // ---------------------------------------------------------- 
    38     public void setActiveEditor(IAction action, IEditorPart targetEditor) 
    39     { 
    40         if (targetEditor instanceof ComponentEditor) 
    41         { 
    42             componentEditor = (ComponentEditor)targetEditor; 
    43             project = null; 
    44             action.setEnabled(true); 
    45         } 
    46         else 
    47         { 
    48             componentEditor = null; 
    49             project = null; 
    50             action.setEnabled(false); 
    51         } 
    52     } 
    53  
    54  
    5543    // ---------------------------------------------------------- 
    5644    public void run(IAction action) 
    5745    { 
     46        enableAction(action); 
    5847        if (componentEditor == null) return; 
    5948        if (!componentEditor.isConnectedToFile()) return; 
     
    178167    public void selectionChanged(IAction action, ISelection selection) 
    179168    { 
    180         // unused 
     169        enableAction(action); 
     170    } 
     171 
     172 
     173    // ---------------------------------------------------------- 
     174    public void dispose() 
     175    { 
     176        window.removePageListener(this); 
     177        if (registeredPage != null) 
     178        { 
     179            registeredPage.removePartListener(this); 
     180        } 
     181    } 
     182 
     183 
     184    // ---------------------------------------------------------- 
     185    public void init(IWorkbenchWindow window) 
     186    { 
     187        this.window = window; 
     188        window.addPageListener(this); 
     189        monitorPage(window.getActivePage()); 
     190    } 
     191 
     192 
     193    // ---------------------------------------------------------- 
     194    public void pageActivated(IWorkbenchPage page) 
     195    { 
     196        monitorPage(page); 
     197    } 
     198 
     199 
     200    // ---------------------------------------------------------- 
     201    public void pageClosed(IWorkbenchPage page) 
     202    { 
     203        unmonitorPage(page); 
     204    } 
     205 
     206 
     207    // ---------------------------------------------------------- 
     208    public void pageOpened(IWorkbenchPage page) 
     209    { 
     210        monitorPage(page); 
     211    } 
     212 
     213 
     214    // ---------------------------------------------------------- 
     215    public void partActivated(IWorkbenchPart part) 
     216    { 
     217        monitorPart(part); 
     218    } 
     219 
     220 
     221    // ---------------------------------------------------------- 
     222    public void partBroughtToTop(IWorkbenchPart part) 
     223    { 
     224        monitorPart(part); 
     225    } 
     226 
     227 
     228    // ---------------------------------------------------------- 
     229    public void partClosed(IWorkbenchPart part) 
     230    { 
     231        if (part == componentEditor) 
     232        { 
     233            monitorPart(null); 
     234        } 
     235    } 
     236 
     237 
     238    // ---------------------------------------------------------- 
     239    public void partDeactivated(IWorkbenchPart part) 
     240    { 
     241        if (part == componentEditor) 
     242        { 
     243            monitorPart(null); 
     244        } 
     245    } 
     246 
     247 
     248    // ---------------------------------------------------------- 
     249    public void partOpened(IWorkbenchPart part) 
     250    { 
     251        monitorPart(part); 
    181252    } 
    182253 
     
    234305 
    235306 
     307    // ---------------------------------------------------------- 
     308    private void unmonitorPage() 
     309    { 
     310        if (registeredPage != null) 
     311        { 
     312            monitorPart(null); 
     313            log.debug("no longer monitoring page"); 
     314            registeredPage.removePartListener(this); 
     315        } 
     316        registeredPage = null; 
     317    } 
     318 
     319 
     320    // ---------------------------------------------------------- 
     321    private void unmonitorPage(IWorkbenchPage page) 
     322    { 
     323        if (registeredPage == page) 
     324        { 
     325            unmonitorPage(); 
     326        } 
     327    } 
     328 
     329 
     330    // ---------------------------------------------------------- 
     331    private void monitorPage(IWorkbenchPage page) 
     332    { 
     333        if (page == registeredPage) return; 
     334        unmonitorPage(); 
     335        if (page != null) 
     336        { 
     337            page.addPartListener(this); 
     338            log.debug("monitoring page " + page); 
     339            monitorPart(page.getActivePart()); 
     340        } 
     341        registeredPage = page; 
     342    } 
     343 
     344 
     345    // ---------------------------------------------------------- 
     346    private void monitorPart(IWorkbenchPart part) 
     347    { 
     348        if (part == componentEditor) return; 
     349        if (part instanceof ComponentEditor) 
     350        { 
     351            log.debug("monitoring component editor = " + part); 
     352            componentEditor = (ComponentEditor)part; 
     353        } 
     354        else 
     355        { 
     356            log.debug("no longer monitoring component editor"); 
     357            componentEditor = null; 
     358        } 
     359        enableAction(null); 
     360    } 
     361 
     362 
     363    // ---------------------------------------------------------- 
     364    private void enableAction(IAction action) 
     365    { 
     366        if (action != null) 
     367        { 
     368            myAction = action; 
     369        } 
     370        if (myAction != null) 
     371        { 
     372            if (componentEditor == null) 
     373            { 
     374                myAction.setEnabled(false); 
     375            } 
     376            else 
     377            { 
     378                myAction.setEnabled(true); 
     379            } 
     380        } 
     381    } 
     382 
     383 
    236384    //~ Instance/static variables ............................................. 
    237385 
    238386    private ComponentEditor componentEditor; 
    239387    private IProject project; 
     388    private IWorkbenchWindow window; 
     389    private IWorkbenchPage registeredPage; 
     390    private IAction myAction; 
    240391 
    241392    private static final Logger log =