sticky documentation popup [take 1]
[fedora-idea.git] / platform / platform-impl / src / com / intellij / ide / actions / AssociateFileType.java
blobf8325325ea820663d7b61c5eb1f46b9c32165a14
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.ide.actions;
18 import com.intellij.openapi.actionSystem.*;
19 import com.intellij.openapi.fileTypes.FileTypeManager;
20 import com.intellij.openapi.fileTypes.FileTypes;
21 import com.intellij.openapi.fileTypes.ex.FileTypeChooser;
22 import com.intellij.openapi.project.Project;
23 import com.intellij.openapi.vfs.VirtualFile;
25 public class AssociateFileType extends AnAction {
26 public void actionPerformed(AnActionEvent e) {
27 DataContext dataContext = e.getDataContext();
28 VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
29 FileTypeChooser.associateFileType(file.getName());
32 public void update(AnActionEvent e) {
33 Presentation presentation = e.getPresentation();
34 DataContext dataContext = e.getDataContext();
35 VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
36 Project project = PlatformDataKeys.PROJECT.getData(dataContext);
37 boolean haveSmthToDo;
38 if (project == null || file == null || file.isDirectory()) {
39 haveSmthToDo = false;
41 else {
42 haveSmthToDo = FileTypeManager.getInstance().getFileTypeByFile(file) == FileTypes.UNKNOWN;
44 presentation.setVisible(haveSmthToDo || ActionPlaces.MAIN_MENU.equals(e.getPlace()));
45 presentation.setEnabled(haveSmthToDo);