Intellij IDEA Persistent Changelists (after commit)? - java

In Intellij IDEA 9 or 10, is there something akin to a persistent changelist? I'd like to continue to monitor a list of files after the commit; I'd like to continue making updates based upon a single use case or (JIRA) ticket.
Favorites are not as intuitive as changelists as they cannot group units of work into separate concerns. It's a single list I have to actively maintain. In addition, I'd like to be able to track a file separately across multiple changelists.
Lastly, I've looked around for a plugin that may accomplish this, but haven't found anything.
Thanks for your help.

There is probably another way to it using Idea's contexts. Navigate to the Tools -> Contexts in the menu and save your current context. When you will need it back then just load it. More information on contexts is available in the idea's help.

Note to future readers: Circa 2016, Changelists are now persistent by default, with a dialog prompting you to turn on auto-deletion of empty changelists.
They automagically incorporate both tasks and contexts, allowing you to manage all three together conveniently.
Alternately, you can navigate to Tools -> Tasks & Contexts -> Open Task or press Alt+Shift+N and enter a new or existing task name; when creating a new task, it offers to create a changelist for you; and, it offers to copy the current context, or start fresh.

After further searching, I found a plugin to do exactly as I needed.
Chris Bartley's Workspaces:
http://plugins.intellij.net/plugin/?id=83

Related

GWT: Sharing information between instances of the same module

I've read extensively about this, and I am wondering if there is a better way.
My requirement is essentially the same as this OPs.
I need to display a complex table in a new browser tab. I followed the responders advice, and loaded a new instance of the main module into the new tab. I did so like this blog post suggests. I can't simply use a dialogBox like so many people have suggested in similar questions.
I did all this without really thinking about the consequences. In particular, I now need to send a lot of information back and forth between the two instances. From what I've read, exporting to JSNI methods, or using GWT exporter are ways to do this. I've already spent soo long just getting it to be able to load certain views based on a javascript variable set when opening a new tab.
Is this a common way of addressing this problem? It seems like opening a widget in a new browser tab would be a relatively common requirement, yet the solution is getting more and more complex and cumbersome the farther I go. Is that just how it is?
Thank you
Setting a cookie in one tab affects cookies in all tabs of the same domain immediately, i.e. without reloading any of those tabs. (Just tested it in current versions of Chrome, FF and IE.)
Couldn't that be of some use?
I would give HTML 5 Messaging a try. This allows you to send JSON data between two windows. with JSNI, it should not be a big deal.
http://bear-z.com/gwt/implementing-postmessage-technology-into-gwt/
http://tutorials.jenkov.com/html5/messaging.html

Eclipse unable to clean build output

I have an Eclipse (4.4.1) working set consisting of ~60 projects (the number may be relevant, as it takes more time to refresh the workspace). Occasionally, I encounter build failures because Eclipse is unable to clean the output folder before build:
It turned out that the process which locks the file is Eclipse itself:
It also turned out that files being locked are always of XML content. Particularly, if I define resources with *.foo extension as XML files (via Preferences -> General -> Content Types), there's a good chance they will be locked, too, once they're copied to the output path.
I thought the problem was caused by all XML resources being validated automatically:
-- so I added exclusion filters 1st and even disabled XML/XSD validation entirely. The problem stopped occurring that often, but still emerges from time to time. Refreshing or closing-reopening a project isn't helpful.
The only remedy is restarting Eclipse or running Unlocker every 1/2 hour, which is not very convenient.
Any ideas how to solve or at least further diagnose this?
Just my 2 cents.
Perhaps you can fix this issue by following this steps:
Project -> Properties -> Builders -> New -> Program
Define a custom "Cleaner"-Program, for example Unlocker or your own Java- or CMD-script
Move your custom Builder-Program up. It should be the first Builder in the list
P.S. some times i have similar problems caused by Avira Antivirus Scanner...
Disable third-party version control daemons. (Like TGitCache).
They only lock resources for a short while and are not visible in Process Explorer, but are the most frequent cause of such failures.
Assuming that XML Validation is the main cause of your problem, I suggest you extend your search for validation points in your projects' configuration, to set off all of them:
General preferences/Validation
General preferences/XML/XML files/Validation (the "honour all schema locations" option might be causing delay at validating)
Project preferences/Validation (check them; might be overriding the general preferences)
Project preferences/Builders/Validator
Hope it helps.
I have experienced similar issues. Yes, the number of projects is probably the cause. Close the projects not in use. If that cleans things up moving groups of related project into separate work spaces should help you out.
i.e File-> Close project
I'm not familiar with the problem, but I would tackle the problem this way:
download File Leak Detector
add the agentpath to your eclipse.ini (e.g.,
-javaagent:path/to/file-leak-detector.jar=http=19999, see documentation of File Leak Detector)
when the problem happens again, see which (eclipse) class is responsible for holding a handle of the file
Find out what is the purpose of the class that holds the handle
This way, you are maybe able to pin down the Eclipse feature that causes your problem.

Is there a way to extend SmartGit so it works with Gerrit?

We use SmartGit for much of our interaction with Git. SmartGit doesn't allow you to specify custom URIs for remote branches. It likes you to select from a list, which doesn't include changes listed under refs/for/master. I was wondering if there was some way to add a custom menu action to SmartGit for checking out from Gerrit. I guess there's no way to add macros in SmartGit? I understand I can always use commandline or eGit, but I'm trying to keep all git management under one tool, if at all possible.
Update
Forgot to mention, I'm interested in getting checkouts to work as well. For specific refs which represent changes. For example: refs/changes/10/35020/1.
In SmartGit you can use Push Advanced, select Into a non-default remote branch there and enter refs/for/master. SmartGit currently does not allow to pull an arbitrary ref nor does it display any other refs than refs/heads, refs/remotes and refs/tags.

What's the best approach to build the same Android apps for different public?

I'm working on an app that is meant to be used by fans of a sport team. In the future, I expect to use the same app but for any different team. So, what changes would be the colors, team logo, app name and the like.
So, is there any technique that allows me to build binaries for different teams without having duplicated resources?
Probably the best way is to depart from the default build system. That typically means writing custom Ant scripts (or you could use some kind of preparatory script that manipulates the resources prior to invoking the default build).
I've previously sketched an outline of how I achieved something similar.
Is it possible to have one binary that contains all the resources and have the user select which team they want from the app itself? Then the app can load whichever resources it needs.
There may be a better way to do this, but here goes:
Build your app for the first team and make all logos / team names / styles / etc resources. Then just write yourself a script that allows you to delete all the items in the res/ folder of your project and replace them with different items. If you are smart, then most of the string's like team names are included in the logos, so all your script has to do is to delete the old ones and copy in the new ones from some other location on your hard drive.
The worst part about this is that you will have to define android-type file for the styles. It might be good to have your script take as parameters a team primary & secondary color, and actually generate all the android-type style files.
Again, there might be a better way, I am just saying that this way could be a solution.
I think build your application which will load the image , colour information from internet / your server. then,
1) ask user for team name which they are following and download image,color information from internet/server and store it as local. don't download next time.
2) attach any global id with each build which will download the image,color information from server first time user installs the application.

Can you save groups of tabs in Eclipse so you can open them later?

I have several different processes within a single project that I work on. I am constantly opening and closing tabs(java files) in the code editor for that particular process. Each process almost always uses the same java files.
I was wondering if it is possible to save what files are opened as part of the working set so I can select what working set I want and have all the java files open that I will need to work with. Currently the working set just sets the tree to these files, but I am looking to also have it open the files I need.
I hope this makes sense...
Mylyn should be your answer here.
Mylyn is a task-focused interface for Eclipse that makes working with very large workspaces as easy as working with small ones.
Mylyn extends Eclipse with mechanisms for keeping track of the tasks that you work on.
Mylyn monitors your work activity on those tasks to identify information relevant to the task-at-hand. Mylyn monitors Eclipse and captures your interaction in a task context.
System artifacts such as files, types, methods, and fields get assigned a degree-of-interest based on how recently and frequently you interact with them.
This results in uninteresting elements being filtered from view within Eclipse, allowing you to focus in on what is important.
Following Saheed's answer, don't miss CodeKiller's comment:
You can
Activate the task to reopen all files and
Deactivate the task to close all the files.
Bookmarks (mentioned here by user1039663) is a valable alternative.
Eclipse provides multiple ways of structuring the IDE desktop:
Perspectives: Customization of the positions of open and closed views and editors. You can copy and rename existing perspectives like the Java perspective and suit them to your needs by customizing them. See the Window menu or right-click on the perspective icon in the upper right corner
Task Management Tools like Mylyn: see answer by VonC
Multiple Windows: You can open new windows and move them to your second monitor. Select Window > New Window to open a new window. Each window keeps track of its own open editors.
Multiple Instances of Eclipse: You can always use multiple workspaces and multiple instances of Eclipse. However, this is only recommended when working on different projects, as both instances would overwrite each others files when rebuilding.
Hotkeys: By using shortcuts like Ctrl-T and Alt-Left/Alt-Right and Ctrl-Q you can quickly jump to previous locations where you have edited source files. This is a great help in navigating the open workspace.
Extended VS Presentation provides capabilities to save sessions.
Unluckily, it only works with Eclipse 3.1 to 3.8:
Project page at Eclipse Marketplace
The accepted answer tells us which tool could be used but does not provide a quick and dirty explanation on how to use it.
In my case, I hadn't finished researching a large code base but I needed to save my progress so I could return to it later hence the need to save all open tabs using Mylyn.
If you already have Mylyn installed, navigate to Window -> Show View -> Task List to view the list of tasks. If you've never used it before, the list will be empty.
Right-click inside the Task List view then New -> Category to create a new category. Right-click again New -> Task to create a new task.
Double-click on the task you just created then click on the Context tab at the bottom left of the view.
Now navigate to each tab which you would like Mylyn to save by clicking on the tab name. Notice how an entry for the source file for that tab is added in Context tab of the Task List view.
Once you've cycled through all the tabs you'd like to save, you can confirm they were saved by closing each one and double-clicking the source file in the Task List to restore the tab.
I've edited this answer as per below comment (include essential parts of answer in this post).
Yes, you can save off groups of tabs in Eclipse by installing this Session Manager plug-in.
I've wanted this functionality in Eclipse as well. I recently wrote a feature and have been successfully using it for a few months now. It is a new OSGi type extension and works with Eclipse Neon and above.
Here's how to install it.
In Eclipse, go to Help → Install New Software
Click “Add”, enter a name like “Editor Sessions” and the following URL.
http://spillikinaerospace.com/eclipseInstall/
Unckeck “Group items by category” to see the feature.
Check the box that says “Editor Sessions Manager” and click Next.
Read and agree to the short license agreement.
Click the remaining install buttons.
Allow Eclipse to restart.
Full set of instructions are here: http://chrishull.com/projects/eclipse/
Please give it a try and send comments. I've found it a very useful tool as I work with several Eclipse projects at once and need to recall file groups.
Hope you enjoy it;
-Chris
In addition to all mentioned... Did you try Bookmarks? You can save multiple bookmarks into one set, there are bookmark sets management option and you can add descriptions with prefixes to group bookmarks on the same set. Finally and more important: you can select multiple bookmarks, select goto and multiple editors will be opened at once.
You need a Macro. Searching using this term at Eclipse plugin sites like eclipseplugincentral.com and so on must yield enough suggestions, for example Practically Macro. Good luck.

Categories