Could close the workbench without any hint about unsaved content? - eclipse

I am developing an Eclipse RCP Application. I know the method org.eclipse.ui.internal.Workbench.close() could close the workbench and if the workbench has an open editor with unsaved content, the user will be given the opportunity to save it.
But whether I have the ability to close the workbench directly without saving any unsaved conent and without any hint ?

The IWorkbenchConfigurer which is passed to the WorkbenchAdvisor and WorkbenchWindowAdvisor has an emergencyClose which should do a close.
But note what the Javadoc for the method says:
Forces the workbench to close due to an emergency. This method should
only be called when the workbench is in dire straights and cannot
continue, and cannot even risk a normal workbench close (think "out of
memory" or "unable to create shell"). When this method is called, an
abbreviated workbench shutdown sequence is performed (less critical
steps may be skipped). The workbench advisor is still called; however,
it must not attempt to communicate with the user.
Also note that the Workbench class is internal and should not be accessed directly - only with the IWorkbench interface.

Related

Eclipse RCP handle CustomMigration Exceptions

I have a model in an Eclipse RCP application. Sometimes a new model version is created, so the existing model gets migrated. This can be done by implementing the CustomMigration class. This migration takes place when opening the model file with a editor implementation.
If this migration fails for some reason, the model can not be migrated. The problem is, in this case the editor is still being opened, but this will not work because there is no valid model. This will cause a mess like a broken editor window and exceptions.
How can this mess be avoided? Is there a reason to abort the opening process of the editor? Or is it possible to do the migration before the window is opened?

BSOD when modifying an XPage

I have a very weird situation. Since a few days, the following actions will crash my Windows 10 PC (using Notes R9.01FP8):
I open my Prefs page in the Domino Designer
click on the Source tab
move to a specific location in a table
then I add a Repeat control
I then open the Properties of the Repeat control
to set the data to JavaScript...
and nothing happens, until after a few seconds: BSOD - Unexpected Kernel Mode Trap in either win32kfull.sys or ntoskrnl.exe.
Sometimes, the JavaScipt box is displayed, so I can paste my code, but a short while later the PC still crashes.
I have to say that my PC crashed a lot lately, so I reinstalled Windows and all drivers, so there might be a rotten one that causes all this. According to DriverEasy, all drivers are now up to date. The Event viewer displays a BugCheck event, but nothing relevant (to me anyway).
What I did for further analysis:
I removed Cache.ndk, it didn't help (of course)
in a copy of the XPage, the system crashes when I add the Repeat
ditto, in a different XPage
it seems to work in a different Notes database, on a different XPage
so I created a new database, copied all elements from the original database over, and still the system crashes when I add the Repeat
I'll be doing so more tests, e.g. with an empty database and just one XPage, then adding my Prefs page, or with the same database but then on a server. Actually, one could say I'm kind of lost, and stumbling around in the dark.
My questions to the XPages/Eclipse gurus:
could it be the workspace, and is there any way to reset it?
do you have any suggestions how to get this solved?
Thanks!
The Windows Creator update that MS posted does not seem to fix the Designer crash.
https://grahamacres.wordpress.com/2017/07/10/domino-designer-still-crashes-after-windows-10-creators-update/

eclipse e4 restore perspective on startup automatically

We all know that by default eclipse saves application state in workbench.xmi and then recreates perspective only if this file is absent. However, I've got a project on e4 which ignores this file even though it exists and -clearPersistentState is NOT specified in arguments. I think there should be some piece of code somewhere responsible for this but the project is too big I don't know how to track it down. My goal is to make this app to use workbench.xmi once again to restore perspective.
To investigate why this happens I want to know which eclipse method is responsible for perspective restoration so I could make sure that this project at least launches this method. That's the main question.
The less main and the less clear question is how this default restoration behavior can be avoided? I mean where should I look for the possible source of this problem? Could there be some option in some .xml which makes the project forget about workbench.xmi? Could it be some sort of startup handler which manually restores default perspective? Maybe some hint about which methods are possibly should be involved in this so I could search for them. Any help is appreciated. Thanks in advance.
-UPDATE-
So it turned out that the problem arises because the project UI is defined in fragments rather than in main Application.e4xmi and eclipse has a bug due to which fragments UI merge with main application after previous state restoration thus replacing restored settings with predefined ones. This bug is discussed in this thread.
This useful article describes how one can manually save and load various application components. Another useful source of inspiration is the source code of ResourceHandler itself.
The main E4Application class controls loading and saving the application model.
E4Application calls a class implementing IModelResourceHandler to load and save the model and the persisted state. It is possible for an application to use its own version of IModelResourceHandler but normally the default org.eclipse.e4.ui.internal.workbench.ResourceHandler is used.
ResourceHandler uses the clearPersistedState, persistState and the deprecated deltaRestore options to control loading the persisted state. These values can be set by command line options.
Add apply="initial" to fragment tag in your plugin.xml to restore stored perspective from workbench.xmi
Example:
<fragment
uri="fragment.e4xmi"
apply="initial">
</fragment>

Is there auto-syncing in netbeans for external changes

I know netbeans syncs the original files once I save, but if there is a file changed externally is there a way for netbeans to recognize this and either tell me to re-sync it or automatically resync it with the new changes?
Here's what makes this behavior possible:
NetBeans 6.9 contains a feature that automatically looks for external changes to keep informations about files up-to-date. We have some reports that it can slow down NetBeans mainly, when an open project has many folders. When NetBeans find out that files were externally changed, it re-scans the files to keep data up-to-date that are used with features like code completion, navigation etc. Unfortunately the notification and following re-scanning can take some time and during this time many mentioned features are waiting for the finishing of scanning. There is option Enable auto-scanning of sources that can switch off this behavior. The option you can find it in Options dialog, Miscellaneous category and Files tab.
The default behavior is that NetBeans also looks for external changes when the main window gets focus. This is can be during developing a web application very often when user switches between browser and IDE. The mentioned option also switch this off.
When you switch off option Enable auto-scanning of sources you can still keep the information up-to-date, just invoke Scan for External Changes action from Sources menu manually.
(Here's the original article by Petr Pisl)
I find it counterproductive to leave this setting on, as sometimes auto-loading external changes to a file opened in the UI without asking for permission first can ruin your day when you're forced to make small local changes that you don't want replicated in your repository. I'm sure other people can think of more reasons to advocate for "warn before loading external changes" behavior to be implemented in NB. That is one of the reasons why I like Eclipse better sometimes.

eclipse - class find editor - source not find

I have a problem with eclipse debugging. I had a proper working code and few hours ago I add one more external library to do something new. When I run the program now it works properly, but when I want to debug it, it stopped on the first line of a new part of the code (the one using the newest external library). It shows the info:
"Class File Editor
Source not found
The source attachment does not contain the source for the file ModelBuilder.class"
When I try to step over I just receive the same information but connected with other files. After stepping over a multiple times I finally get back to my code and can debug the rest of the program normally.
Of course I can do it always but does anybody know the solution to that problem, not to click step over multiple times but debug normally?
It should not enter the external library code unless you step into it, or there's an exception in that code. If you find yourself stepping through code you don't have source to, use Step Return, which jumps to the end of whatever method you're in.
If it is caused by an exception in the library code and you want to ignore it, go to Window > Preferences > Java > Debug and uncheck "Suspend execution on uncaught exceptions".
If you know what exception is causing the execution to suspend, then you could also try this:
Go to the Debug perspective
Open the Breakpoints view
Click the J with the exclamation point by it (J!)
Search for the exception that triggers the debug suspend
Uncheck the two check boxes
Say OK