Search Results

Search found 3574 results on 143 pages for 'nautilus actions'.

Page 6/143 | < Previous Page | 2 3 4 5 6 7 8 9 10 11 12 13  | Next Page >

  • Is there a hotkey to toggle between the two panes only in Nautilus (with Extra Pane/F3 mode)?

    - by Jakob
    I am running Nautilus with the Extra Pane feature enabled. But I am missing a keyboard shortcut to switch between the left and right pane. Is there a shortcut key for toggling just between the left and right file pane? Something that works like tab in Total Commander/Midnight Commander? Tab and Shift-Tab are not what I'm looking for. They cycle through several other GUI elements in addition to the two panes. I'm on Ubuntu 10.04 if that matters.

    Read the article

  • How to get rid of devices in the right panel of Nautilus ?

    - by Patryk
    I would like to rid of not mounted ntfs partition from Nautilus' right panel ( I just want 352 GB Filesystem - d drive to be there. First of all 352 GB Filesystem is in fact d so I do not know why it is duplicated. Secondly I have put Acer and SYSTEM RESERVED to be nouser mounts on purpose, so that I (or sombody else) will not format it (or else) by accident. So my /etc/fstab looks like this : #comments....... # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 UUID=1384cee0-6a71-4b83-b0d3-1338db925168 / ext4 noatime,errors=remount-ro 0 1 UUID=e3729117-b936-4c1d-9883-aee73dab6729 none swap sw 0 0 #------ MY WINDOWS D DRIVE---------- UUID=98E8B14DE8B12A80 /media/d ntfs defaults,errors=remount-ro,user 0 0 # #-------ACER---------------- UUID=01CBEA9D4476C2F0 /media/acer ntfs defaults,noauto,noexec,ro,nouser 0 0 # #-------SYSTEM RESERVED----- UUID=01CBEA95760F9330 /media/systemreserved ntfs defaults,noauto,noexec,ro,nouser 0 0 #UUID=58F9-C17E /boot/efi vfat defaults 0 1 blkid and fdisk -l root@XXX:/home/YYY# fdisk -l ... Device Boot Start End Blocks Id System /dev/sda1 4096 27262975 13629440 27 Hidden NTFS WinRE /dev/sda2 27262992 27467791 102400 7 HPFS/NTFS/exFAT /dev/sda3 27467792 232267775 102399992 7 HPFS/NTFS/exFAT /dev/sda4 232267793 976771071 372251639+ f W95 Ext'd (LBA) /dev/sda5 232267795 918867967 343300086+ 7 HPFS/NTFS/exFAT /dev/sda6 * 918870016 968044543 24587264 83 Linux /dev/sda7 968046592 976771071 4362240 82 Linux swap / Solaris root@XXX:/home/YYY# blkid /dev/sda1: LABEL="PQSERVICE" UUID="01CBEA95730D28A0" TYPE="ntfs" /dev/sda2: LABEL="SYSTEM RESERVED" UUID="01CBEA95760F9330" TYPE="ntfs" /dev/sda3: LABEL="Acer" UUID="01CBEA9D4476C2F0" TYPE="ntfs" /dev/sda5: UUID="98E8B14DE8B12A80" TYPE="ntfs" /dev/sda6: UUID="1384cee0-6a71-4b83-b0d3-1338db925168" TYPE="ext4" /dev/sda7: UUID="e3729117-b936-4c1d-9883-aee73dab6729" TYPE="swap"

    Read the article

  • Unable to mount smb share. "Please select another viewer and try again". Please help. Serious smb/nautilus foo needed

    - by oznah
    This don't think this is the typical, "I can't mount a windows share" post. I am using stock Ubuntu 12.04. I am pretty sure this is a Nautilus issue, but I have reached a dead end. I have one share that I can't mount using smb://server/share via nautilus. I get the following error. Error: Failed to mount Windows share Please select another viewer and try again I can mount this share from other machines(non-ubuntu) using the same credentials so I know I have perms on the destination share. I can mount other shares on other servers from my Ubuntu box so I am pretty sure I have all the smb packages I need on my Ubuntu box. To make thing more interesting, if I use smbclient from the command line, I mount this share with no problems from my Ubuntu box. So here's what we know: destination share perms are ok (no problem accessing from other machines) smb is setup correctly on Ubuntu box (access other windows shares no problem) I only get the error when using nautilus smbclient in terminal works, no problem Any help would be greatly appreciated. Googling turned up simple mount/perms issues, and I don't think that is what is going on here. Let me know if you need more information. Hugh

    Read the article

  • Nautilus file share for multiple users is not working. Only owner gets access.

    - by Niklas
    I have always had trouble setting up samba shares with ubuntu. In the past I've tried getting it to work by configuring /etc/samba/smb.conf but never achieved what I wanted. Last time I managed to get it working by making a share with nautilus built in file sharing (which utilises samba). Now when I try do it again I doesn't work. (running ubuntu 10.10 Desktop x64) What I'm trying to achieve is a share which is available for multiple users (those who are in the same group) and not just the owner (who also is included in the group). As it is now I can connect with only the owner, the others are getting an error when I try to connect with windows 7. All the users are within the same group and the folder permissions are 770. The files and folders have the correct group settings. I think there is no restrictions in the User Settings for the other users blocking them and I marked "make available to other users (or whatever it says)" in the file sharing dialog. What can I do?

    Read the article

  • How can I instruct nautilus to pre-generate PDF thumbnails?

    - by Glutanimate
    I have a large library of PDF documents (papers, lectures, handouts) that I want to be able to quickly navigate through. For that I need thumbnails. At the same time however, I see that the ~/.thumbnails folder is piling up with thumbs I don't really need. Deleting thumbnail junk without removing the important thumbs is impossible. If I were to delete them, I'd have to go to each and every folder with important PDF documents and let the thumbnail cache regenerate. I would love to able to automate this process. Is there any way I can tell nautilus to pre-cache the thumbs for a set of given directories? Note: I did find a set of bash scripts that appear to do this for pictures and videos, but not for any other documents. Maybe someone more experienced with scripting might be able to adjust these for PDF documents or at least point me in the right direction on what I'd have to modify for this to work with PDF documents as well. Edit: Unfortunately neither of the answers provided below work. See my comments below for more information. Is there anyone who can solve this?

    Read the article

  • Is there a way to make nautilus display the "recently used" files and directories?

    - by Peltier
    Is there a way to make nautilus display the "recently used" files and directories, just like the "open file" dialog does? Just to make my question clearer, here are two screenshots: The GTK open file dialog, showing the recently used items: A nautilus window, which doesn't offer to display recently used items: EDIT : This has been added as a feature request to Nautilus. Don't hesitate to make your voice heard if you want it to happen!

    Read the article

  • Where is my Ubuntu One ribbon?

    - by Roland Taylor
    I'm not seeing the Ubuntu One ribbon in Nautilus-Elementary. I have the nautilus-terminal extension as well, so I don't know if they don't work together. I tried running nautilus from the terminal (for a separate issue), and I think I might be onto something. It seems the Ubuntu One ribbon is not finding something (it had an exception). I got the NE-Terminal working again by deleting the gconf directory for Nautilus.

    Read the article

  • Pattern for performing game actions

    - by Arkiliknam
    Is there a generally accepted pattern for performing various actions within a game? A way a player can perform actions and also that an AI might perform actions, such as move, attack, self-destruct, etc. I currently have an abstract BaseAction which uses .NET generics to specify the different objects that get returned by the various actions. This is all implemented in a pattern similar to the Command, where each action is responsible for itself and does all that it needs. My reasoning for being abstract is so that I may have a single ActionHandler, and AI can just queue up different action implementing the baseAction. And the reason it is generic is so that the different actions can return result information relevant to the action (as different actions can have totally different outcomes in the game), along with some common beforeAction and afterAction implementations. So... is there a more accepted way of doing this, or does this sound alright?

    Read the article

  • How to drag from a background window to the front window

    - by Luis Alvarado
    Is the following I will explain possible with a key combination? Here is the image: As you can see, the terminal is the focus window (Front window) and Nautilus is in the background (Back Window). How can I grab a folder or file from Nautilus without loosing focus on the terminal (Without making the terminal go to the background and Nautilus to the front) and drop it in the terminal?. What I want is not to have to ALT+TAB again just to do this. Options like resizing the windows to fit the screen are not what I am looking for. Like in the image, we have a fullscreen window that we want it to stay like that. We can drag the terminal window around but anytime I access the background nautilus window, I should not loose focus on the terminal (It should not go to the background every time I access Nautilus). Maybe like a key combination that freezes the current focus windows positions and I can drag from background windows to background windows or background windows to the front focused one.

    Read the article

  • How do I prevent directories mounted with 'bind' from appearing on 'Devices' on nautilus?

    - by Can
    I have these lines in the fstab # binds /media/DataNtfs/Music /home/can/Music none rw,bind /media/DataNtfs/Pictures /home/can/Pictures none rw,bind /media/DataNtfs/Downloads /home/can/Downloads none rw,bind /media/DataNtfs/Documents /home/can/Documents none rw,bind /media/DataNtfs/Backups /home/can/Backups none rw,bind /media/DataNtfs/Notes /home/can/Notes none rw,bind /media/DataNtfs/Other /home/can/Other none rw,bind /media/DataNtfs/Packages /home/can/Packages none rw,bind /media/DataNtfs/Photos /home/can/Photos none rw,bind /media/DataNtfs/Videos /home/can/Videos none rw,bind /media/DataNtfs/WorkSpace /home/can/WorkSpace none rw,bind

    Read the article

  • Is there any tweak to bring back emblems in Nautilus?

    - by Achu
    I read the following dev email Removing 'Backgrounds and Emblems' and when i read this part: Note that this does not completely remove the ability for extensions (e.g. Dropbox) to add emblems programmatically by using the libnautilus-extension library, just the user-added emblems from the properties dialog/emblems sidebar. There is ability to bring emblems programmatically. So, How can i use libnautilus-extension library to add some emblems like Dropbox does? Or is there any tweak tool for this?

    Read the article

  • How to change icons in the side pane of the Nautilus file browser?

    - by oli
    Right-click in the main panel allows to change icons associated to files of directories, and this is cool for content organization and so on. Unfortunately, right click on small directories on the side pane does not allow to change its properties (such as icon). I try to change the original directory icon, expecting that its side pane version would change accordingly, but surprisingly, nothing appends... Any idea?

    Read the article

  • How to create a bookmark under "computer" in the Sidebar of the nautilus file manager in 12.04?

    - by Jiskya
    Somehow, I removed the Downloads bookmark in the Sidebar under "Computer". Is there any way I can make a new one? Possibly with the same icon? I still have my Downloads directory. I just don't have the bookmark under "Computer" anymore, and it has the ordinary folder icon. I know it's not the most significant question, but it's a question nonetheless. Also, I'm not sure, but it may be important to note that I'm using unity 2d.

    Read the article

  • nautilus will not start, no right click menu, apps will not run due to 64bit libicui18n.so.48 overwritten with 32bit, ubuntu 12.04

    - by Dewb
    yeah so i broke my system trying to install support for 32bit apps. Somehow the 32bit set of libicu*.so.48 files replaced my 64bit files and now nothing works. I know what the problem is and how to fix it , what i need is some help. I need some kind soul running a 64bit install of Ubuntu 12.04 to simply go into their /usr/lib dir and copy the files that have the form libicu*.so.48* (8 of them i think, maybe 16 i dunno how many there is supposed to be since they were overwritten). Anyway if you could put those files in an archive, zip or tar preferred and then email/share the link. I was able to get these files installed but they're from the latest edition of fedora and while i can now use my computer , it's not that stable things don't start right smoothly every time like they used to .... and well its a simple ordeal to put things back the way they were if someone wouldn't mind helping out. also any help setting up the libraries related to 32bit apps would be great as well as i apparently screwed that up royally. Thanks for any help or advice

    Read the article

  • Escape whitespace in paths using nautilus script

    - by Tommy Brunn
    I didn't think this would be as tricky as it turned out to be, but here I am. I'm trying to write a Nautilus script in Python to upload one or more images to Imgur just by selecting and right clicking them. It works well enough with both single images and multiple images - as long as they don't contain any whitespace. In fact, you can upload a single image containing whitespace, just not multiple ones. The problem is that NAUTILUS_SCRIPT_SELECTED_FILE_PATHS returns all the selected files and directories as a space separated string. So for example, it could look like this: print os.environment['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'] /home/nevon/Desktop/test image.png /home/nevon/Desktop/test.jpg What I need is a way to -either in bash or Python- escape the spaces in the path - but not the spaces that delimit different items. Either that, or a way to put quotation marks around each item. The ultimate solution would be if I could do that in bash and then send the items as separate arguments to my python script. Something like: python uploader.py /home/nevon/Desktop/test\ image.png /home/nevon/Desktop/test.jpg I've tried RTFM'ing, but there doesn't seem to be a lot of good solutions for this. At least not that I've found. Any ideas?

    Read the article

  • Failed to retrieve share list from server

    - by Eric Sean Tite Webber
    UBUNTU 11.10 NAUTILUS 3.2.1 We ARE able to see Windows PCs on our network from Ubuntu's NAUTILUS, yet we are NOT able to access their shares from NAUTILUS, even though they work fine with each other, i.e. each windows PC IS able access the other Windows PC's shares just fine. Please infer from this information the answers to any questions about our situation you may have. Note this is a default/pristine configuration, i.e. no changes have been made whatsoever. Our version of Ubuntu is: 11.10, NAUTILUS is 3.2.1 Linux tite-HP-630-Notebook-PC 3.0.0-15-generic #26-Ubuntu SMP Fri Jan 20 17:23:00 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux A screenshot is available upon request. Thanks in advance for your assistance.

    Read the article

  • Is there a command to "manually automount" an attached disk?

    - by cheshirekow
    I have an extra hard drive which I use for backups. The label on its one and only partition is "backup". When I open nautilus and click on "backup" it mounds the drive in "/media/backup", and then there's a little eject button next to it's icon in nautilus. If I manually mount the drive by creating a directory and using "sudo mount /dev/sdx /some/dir", the eject icon still shows up in nautilus, but when I press it I get an error because the device was not mounted via whatever it is that mounts it the other way. What I would like is to be able to do this "mount to /media/backup and enable the eject button" via the command line. The goal is to have the device mounted by a script which needs the drive, but then leave it mounted until I manually eject it... if I want to. P.S. I'm aware that I can have the drive auto mounted at startup, but that's not what I'm looking for here, and I'd like to know if this is possible. Clarification: I'm looking for a command to "mount the drive the way nautilus would". This should create the directory "/media/backup", mount the device to that directory, and then when I press the eject button from nautilus, it should unmount the device and delete the directory.

    Read the article

  • Superclass Sensitive Actions

    - by Geertjan
    I've created a small piece of functionality that enables you to create actions for Java classes in the IDE. When the user right-clicks on a Java class, they will see one or more actions depending on the superclass of the selected class. To explain this visually, here I have "BlaTopComponent.java". I right-click on its node in the Projects window and I see "This is a TopComponent": Indeed, when you look at the source code of "BlaTopComponent.java", you'll see that it implements the TopComponent class. Next, in the screenshot below, you see that I have right-click a different class. In this case, there's an action available because the selected class implements the ActionListener class. Then, take a look at this one. Here both TopComponent and ActionListener are superclasses of the current class, hence both the actions are available to be invoked: Finally, here's a class that subclasses neither TopComponent nor ActionListener, hence neither of the actions that I created for doing something that relates to TopComponents or ActionListeners is available, since those actions are irrelevant in this context: How does this work? Well, it's a combination of my blog entries "Generic Node Popup Registration Solution" and "Showing an Action on a TopComponent Node". The cool part is that the definition of the two actions that you see above is remarkably trivial: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import org.openide.loaders.DataObject; import org.openide.util.Utilities; public class TopComponentSensitiveAction implements ActionListener { private final DataObject context; public TopComponentSensitiveAction() { context = Utilities.actionsGlobalContext().lookup(DataObject.class); } @Override public void actionPerformed(ActionEvent ev) { //Do something with the context: JOptionPane.showMessageDialog(null, "TopComponent: " + context.getNodeDelegate().getDisplayName()); } } The above is the action that will be available if you right-click a Java class that extends TopComponent. This, in turn, is the action that will be available if you right-click a Java class that implements ActionListener: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import org.openide.loaders.DataObject; import org.openide.util.Utilities; public class ActionListenerSensitiveAction implements ActionListener { private final DataObject context; public ActionListenerSensitiveAction() { context = Utilities.actionsGlobalContext().lookup(DataObject.class); } @Override public void actionPerformed(ActionEvent ev) { //Do something with the context: JOptionPane.showMessageDialog(null, "ActionListener: " + context.getNodeDelegate().getDisplayName()); } } Indeed, the classes, at this stage are the same. But, depending on what I want to do with TopComponents or ActionListeners, I now have a starting point, which includes access to the DataObject, from where I can get down into the source code, as shown here. This is how the two ActionListeners that you see defined above are registered in the layer, which could ultimately be done via annotations on the ActionListeners, of course: <folder name="Actions"> <folder name="Tools"> <file name="org-netbeans-sbas-impl-TopComponentSensitiveAction.instance"> <attr stringvalue="This is a TopComponent" name="displayName"/> <attr name="instanceCreate" methodvalue="org.netbeans.sbas.SuperclassSensitiveAction.create"/> <attr name="type" stringvalue="org.openide.windows.TopComponent"/> <attr name="delegate" newvalue="org.netbeans.sbas.impl.TopComponentSensitiveAction"/> </file> <file name="org-netbeans-sbas-impl-ActionListenerSensitiveAction.instance"> <attr stringvalue="This is an ActionListener" name="displayName"/> <attr name="instanceCreate" methodvalue="org.netbeans.sbas.SuperclassSensitiveAction.create"/> <attr name="type" stringvalue="java.awt.event.ActionListener"/> <attr name="delegate" newvalue="org.netbeans.sbas.impl.ActionListenerSensitiveAction"/> </file> </folder> </folder> <folder name="Loaders"> <folder name="text"> <folder name="x-java"> <folder name="Actions"> <file name="org-netbeans-sbas-impl-TopComponentSensitiveAction.shadow"> <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-sbas-impl-TopComponentSensitiveAction.instance"/> <attr intvalue="150" name="position"/> </file> <file name="org-netbeans-sbas-impl-ActionListenerSensitiveAction.shadow"> <attr name="originalFile" stringvalue="Actions/Tools/org-netbeans-sbas-impl-ActionListenerSensitiveAction.instance"/> <attr intvalue="160" name="position"/> </file> </folder> </folder> </folder> </folder> The most important parts of the layer registration are the lines that are highlighted above. Those lines connect the layer to the generic action that delegates back to the action listeners defined above, as follows: public final class SuperclassSensitiveAction extends AbstractAction implements ContextAwareAction { private final Map map; //This method is called from the layer, via "instanceCreate", //magically receiving a map, which contains all the attributes //that are defined in the layer for the file: static SuperclassSensitiveAction create(Map map) { return new SuperclassSensitiveAction(Utilities.actionsGlobalContext(), map); } public SuperclassSensitiveAction(Lookup context, Map m) { super(m.get("displayName").toString()); this.map = m; String superclass = m.get("type").toString(); //Enable the menu item only if //we're dealing with a class of type superclass: JavaSource javaSource = JavaSource.forFileObject( context.lookup(DataObject.class).getPrimaryFile()); try { javaSource.runUserActionTask(new ScanTask(this, superclass), true); } catch (IOException ex) { Exceptions.printStackTrace(ex); } //Hide the menu item if it isn't enabled: putValue(DynamicMenuContent.HIDE_WHEN_DISABLED, true); } @Override public void actionPerformed(ActionEvent ev) { ActionListener delegatedAction = (ActionListener)map.get("delegate"); delegatedAction.actionPerformed(ev); } @Override public Action createContextAwareInstance(Lookup actionContext) { return new SuperclassSensitiveAction(actionContext, map); } private class ScanTask implements Task<CompilationController> { private SuperclassSensitiveAction action = null; private String superclass; private ScanTask(SuperclassSensitiveAction action, String superclass) { this.action = action; this.superclass = superclass; } @Override public void run(final CompilationController info) throws Exception { info.toPhase(Phase.ELEMENTS_RESOLVED); new EnableIfGivenSuperclassMatches(info, action, superclass).scan( info.getCompilationUnit(), null); } } private static class EnableIfGivenSuperclassMatches extends TreePathScanner<Void, Void> { private CompilationInfo info; private final AbstractAction action; private final String superclassName; public EnableIfGivenSuperclassMatches(CompilationInfo info, AbstractAction action, String superclassName) { this.info = info; this.action = action; this.superclassName = superclassName; } @Override public Void visitClass(ClassTree t, Void v) { Element el = info.getTrees().getElement(getCurrentPath()); if (el != null) { TypeElement te = (TypeElement) el; List<? extends TypeMirror> interfaces = te.getInterfaces(); if (te.getSuperclass().toString().equals(superclassName)) { action.setEnabled(true); } else { action.setEnabled(false); } for (TypeMirror typeMirror : interfaces) { if (typeMirror.toString().equals(superclassName)){ action.setEnabled(true); } } } return null; } } } This is a pretty cool solution and, as you can see, very generic. Create a new ActionListener, register it in the layer so that it maps to the generic class above, and make sure to set the type attribute, which defines the superclass to which the action should be sensitive.

    Read the article

  • Is there a way to edit an existing nautilus (file manager) bookmark?

    - by C.W.Holeman II
    Is there a way to edit an existing nautilus (fie manager) bookmark? Invoke from Linux command line: $ nautilus Activate connection editor: File>Connect To Server...> Complete entries in the pop up: Service Type: [WebDAV (HTTP)] Server: [localhost] Port: [8001] Folder [webdav] Username: [test] [x] Add bookmark Bookmark name: [/dav] <Connect> Then in the left column of the main window the new connection and bookmark exist: Places ------------------- ausername Desktop File System Network WebDAV on localhost Trash -------------------- /dav Right click on "/dav" pop up menu: Open Open in New Tab Open in New Window ------------------ Remove Rename... There is no option for editing.

    Read the article

  • Annotation Processor for Superclass Sensitive Actions

    - by Geertjan
    Someone creating superclass sensitive actions should need to specify only the following things: The condition under which the popup menu item should be available, i.e., the condition under which the action is relevant. And, for superclass sensitive actions, the condition is the name of a superclass. I.e., if I'm creating an action that should only be invokable if the class implements "org.openide.windows.TopComponent",  then that fully qualified name is the condition. The position in the list of Java class popup menus where the new menu item should be found, relative to the existing menu items. The display name. The path to the action folder where the new action is registered in the Central Registry. The code that should be executed when the action is invoked. In other words, the code for the enablement (which, in this case, means the visibility of the popup menu item when you right-click on the Java class) should be handled generically, under the hood, and not every time all over again in each action that needs this special kind of enablement. So, here's the usage of my newly created @SuperclassBasedActionAnnotation, where you should note that the DataObject must be in the Lookup, since the action will only be available to be invoked when you right-click on a Java source file (i.e., text/x-java) in an explorer view: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.netbeans.sbas.annotations.SuperclassBasedActionAnnotation; import org.openide.awt.StatusDisplayer; import org.openide.loaders.DataObject; import org.openide.util.NbBundle; import org.openide.util.Utilities; @SuperclassBasedActionAnnotation( position=30, displayName="#CTL_BrandTopComponentAction", path="File", type="org.openide.windows.TopComponent") @NbBundle.Messages("CTL_BrandTopComponentAction=Brand") public class BrandTopComponentAction implements ActionListener { private final DataObject context; public BrandTopComponentAction() { context = Utilities.actionsGlobalContext().lookup(DataObject.class); } @Override public void actionPerformed(ActionEvent ev) { String message = context.getPrimaryFile().getPath(); StatusDisplayer.getDefault().setStatusText(message); } } That implies I've created (in a separate module to where it is used) a new annotation. Here's the definition: package org.netbeans.sbas.annotations; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.SOURCE) @Target(ElementType.TYPE) public @interface SuperclassBasedActionAnnotation { String type(); String path(); int position(); String displayName(); } And here's the processor: package org.netbeans.sbas.annotations; import java.util.Set; import javax.annotation.processing.Processor; import javax.annotation.processing.RoundEnvironment; import javax.annotation.processing.SupportedAnnotationTypes; import javax.annotation.processing.SupportedSourceVersion; import javax.lang.model.SourceVersion; import javax.lang.model.element.Element; import javax.lang.model.element.TypeElement; import javax.lang.model.util.Elements; import org.openide.filesystems.annotations.LayerBuilder.File; import org.openide.filesystems.annotations.LayerGeneratingProcessor; import org.openide.filesystems.annotations.LayerGenerationException; import org.openide.util.lookup.ServiceProvider; @ServiceProvider(service = Processor.class) @SupportedAnnotationTypes("org.netbeans.sbas.annotations.SuperclassBasedActionAnnotation") @SupportedSourceVersion(SourceVersion.RELEASE_6) public class SuperclassBasedActionProcessor extends LayerGeneratingProcessor { @Override protected boolean handleProcess(Set annotations, RoundEnvironment roundEnv) throws LayerGenerationException { Elements elements = processingEnv.getElementUtils(); for (Element e : roundEnv.getElementsAnnotatedWith(SuperclassBasedActionAnnotation.class)) { TypeElement clazz = (TypeElement) e; SuperclassBasedActionAnnotation mpm = clazz.getAnnotation(SuperclassBasedActionAnnotation.class); String teName = elements.getBinaryName(clazz).toString(); String originalFile = "Actions/" + mpm.path() + "/" + teName.replace('.', '-') + ".instance"; File actionFile = layer(e).file( originalFile). bundlevalue("displayName", mpm.displayName()). methodvalue("instanceCreate", "org.netbeans.sbas.annotations.SuperclassSensitiveAction", "create"). stringvalue("type", mpm.type()). newvalue("delegate", teName); actionFile.write(); File javaPopupFile = layer(e).file( "Loaders/text/x-java/Actions/" + teName.replace('.', '-') + ".shadow"). stringvalue("originalFile", originalFile). intvalue("position", mpm.position()); javaPopupFile.write(); } return true; } } The "SuperclassSensitiveAction" referred to in the code above is unchanged from how I had it in yesterday's blog entry. When I build the module containing two action listeners that use my new annotation, the generated layer file looks as follows, which is identical to the layer file entries I hard coded yesterday: <folder name="Actions"> <folder name="File"> <file name="org-netbeans-sbas-impl-ActionListenerSensitiveAction.instance"> <attr name="displayName" stringvalue="Process Action Listener"/> <attr methodvalue="org.netbeans.sbas.annotations.SuperclassSensitiveAction.create" name="instanceCreate"/> <attr name="type" stringvalue="java.awt.event.ActionListener"/> <attr name="delegate" newvalue="org.netbeans.sbas.impl.ActionListenerSensitiveAction"/> </file> <file name="org-netbeans-sbas-impl-BrandTopComponentAction.instance"> <attr bundlevalue="org.netbeans.sbas.impl.Bundle#CTL_BrandTopComponentAction" name="displayName"/> <attr methodvalue="org.netbeans.sbas.annotations.SuperclassSensitiveAction.create" name="instanceCreate"/> <attr name="type" stringvalue="org.openide.windows.TopComponent"/> <attr name="delegate" newvalue="org.netbeans.sbas.impl.BrandTopComponentAction"/> </file> </folder> </folder> <folder name="Loaders"> <folder name="text"> <folder name="x-java"> <folder name="Actions"> <file name="org-netbeans-sbas-impl-ActionListenerSensitiveAction.shadow"> <attr name="originalFile" stringvalue="Actions/File/org-netbeans-sbas-impl-ActionListenerSensitiveAction.instance"/> <attr intvalue="10" name="position"/> </file> <file name="org-netbeans-sbas-impl-BrandTopComponentAction.shadow"> <attr name="originalFile" stringvalue="Actions/File/org-netbeans-sbas-impl-BrandTopComponentAction.instance"/> <attr intvalue="30" name="position"/> </file> </folder> </folder> </folder> </folder>

    Read the article

< Previous Page | 2 3 4 5 6 7 8 9 10 11 12 13  | Next Page >