I have a problem with my RCP application.
First, I defined an activity in my plugin.xml:
<extension
     point="org.eclipse.ui.activities">
  <activity
        id="myproject.view.input.activity"
        name="myproject.view.input.activity">
     <enabledWhen>
        <with
              variable="myproject.view.input.active">
           <equals
                 value="ENABLED">
           </equals>
        </with>
     </enabledWhen>
  </activity>
  <activityPatternBinding
        activityId="myproject.view.input.activity"
        pattern="myproject.gui/myproject.view.input">
  </activityPatternBinding>
Then i defined my SourceProvider:
<extension
     point="org.eclipse.ui.services">
  <sourceProvider
        provider="myproject.util.CommandState">
     <variable
           name="myproject.view.input.active"
           priorityLevel="workbench">
     </variable>
And, finally, my CommandState class:
public class CommandState extends AbstractSourceProvider {
    public final static String OUTPUT_VIEW = "myproject.view.input.active";
    // then goes some others variables, i just skip them
    // ....
    public final static String [] ACTIONS = {OUTPUT_VIEW /*and all others variables*/};
    public final static String ENABLED = "ENABLED";
    public final static String DISENABLED = "DISENABLED";
    private final Map <String, String> currentState = new HashMap <String, String> ();
    @Override
    public void dispose() {
    }
    @Override
    public String[] getProvidedSourceNames() {
        return ACTIONS;
    }
    @Override
    public Map <String, String> getCurrentState() {
        return currentState;
    }
    public void setEnabled(boolean enabled, String [] commands) {
        String value = enabled ? ENABLED : DISENABLED;
        for (String command : commands) {
            currentState.put(command, value);
            fireSourceChanged(ISources.WORKBENCH, command, value);
        }
    }
}
In my Login window, application checks user permissions, and enable or disable views, commands, etc. with setEnabled method of CommandState. For commands it works fine, they are enabling or disabling correctly. But when i try to disable view and open perspective, that contains that view (myproject.view.input), it opened without that view, but also throws exception:
!STACK 1
org.eclipse.ui.PartInitException: Could not create view: myproject.view.input
    at org.eclipse.ui.internal.ViewFactory.createView(ViewFactory.java:158)
I can show full stacktrace if anyone want.
I tried to debug my application and before i open my perspective whith that view, i checked currentState of my CommandState source provider, and all seemes to be ok: all variables values are correct and myproject.view.input.active = DISABLED
Can anyone say, why exception is thrown? Thanks for any help. Sorry for big post and bad language