|
From: <de...@us...> - 2012-10-24 22:29:09
|
Revision: 7803
http://fudaa.svn.sourceforge.net/fudaa/?rev=7803&view=rev
Author: deniger
Date: 2012-10-24 22:29:03 +0000 (Wed, 24 Oct 2012)
Log Message:
-----------
Modified Paths:
--------------
trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/services/SysdocService.java
trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/layer.xml
Modified: trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/services/SysdocService.java
===================================================================
--- trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/services/SysdocService.java 2012-10-24 22:27:31 UTC (rev 7802)
+++ trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/services/SysdocService.java 2012-10-24 22:29:03 UTC (rev 7803)
@@ -3,25 +3,21 @@
*/
package org.fudaa.fudaa.crue.sysdoc.services;
-import com.hexidec.ekit.FudaaAlignAction;
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.fudaa.ctulu.CtuluLibFile;
import org.fudaa.dodico.crue.metier.emh.EMH;
import org.fudaa.fudaa.crue.common.helper.DialogHelper;
import org.fudaa.fudaa.crue.common.services.SysdocContrat;
import org.fudaa.fudaa.crue.options.services.ConfigurationManagerService;
import org.fudaa.fudaa.crue.sysdoc.SysdocTopComponent;
-import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.openide.util.lookup.ServiceProviders;
import org.openide.windows.WindowManager;
-import sun.security.action.OpenFileInputStreamAction;
/**
*
Modified: trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/layer.xml
===================================================================
--- trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/layer.xml 2012-10-24 22:27:31 UTC (rev 7802)
+++ trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/layer.xml 2012-10-24 22:29:03 UTC (rev 7803)
@@ -9,5 +9,4 @@
</folder>
</folder>
</folder>
- <file name="Shortcuts_hidden"/>
</filesystem>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <de...@us...> - 2013-07-17 00:33:44
|
Revision: 8445
http://sourceforge.net/p/fudaa/svn/8445
Author: deniger
Date: 2013-07-17 00:33:38 +0000 (Wed, 17 Jul 2013)
Log Message:
-----------
sydoc
Modified Paths:
--------------
trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/SysdocTopComponent.java
trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/Bundle.properties
Added Paths:
-----------
trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/CustomFindBar.java
trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/EditorSearchable.java
Added: trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/CustomFindBar.java
===================================================================
--- trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/CustomFindBar.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/CustomFindBar.java 2013-07-17 00:33:38 UTC (rev 8445)
@@ -0,0 +1,34 @@
+/*
+ GPL 2
+ */
+package org.fudaa.fudaa.crue.sysdoc;
+
+import java.util.regex.Pattern;
+import org.jdesktop.swingx.JXFindBar;
+import org.jdesktop.swingx.search.Searchable;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class CustomFindBar extends JXFindBar {
+
+ public CustomFindBar() {
+ }
+
+ public CustomFindBar(Searchable searchable) {
+ super(searchable);
+ }
+
+ String getText() {
+ return super.searchField.getText();
+ }
+
+ Pattern getPattern() {
+ return super.getPatternModel().getPattern();
+ }
+
+ void setText(String text) {
+ super.searchField.setText(text);
+ }
+}
Added: trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/EditorSearchable.java
===================================================================
--- trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/EditorSearchable.java (rev 0)
+++ trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/EditorSearchable.java 2013-07-17 00:33:38 UTC (rev 8445)
@@ -0,0 +1,305 @@
+/*
+ GPL 2
+ */
+package org.fudaa.fudaa.crue.sysdoc;
+
+import java.awt.Color;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.swing.JEditorPane;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultHighlighter;
+import javax.swing.text.Document;
+import javax.swing.text.Segment;
+import org.jdesktop.swingx.search.Searchable;
+import org.openide.util.Exceptions;
+
+/**
+ *
+ * @author Frederic Deniger
+ */
+public class EditorSearchable implements Searchable {
+
+ private final JEditorPane editor;
+ private final DefaultHighlighter defaultHighlighter;
+ private final DefaultHighlighter.DefaultHighlightPainter defaultHighlightPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.ORANGE);
+ private boolean highlightEnabled;
+
+ public EditorSearchable(JEditorPane editor) {
+ this.editor = editor;
+ defaultHighlighter = new DefaultHighlighter();
+ editor.setHighlighter(defaultHighlighter);
+ }
+
+ public boolean isHighlightEnabled() {
+ return highlightEnabled;
+ }
+
+ public void setHighlightEnabled(boolean highlightEnabled) {
+ clearHighlight();
+ this.highlightEnabled = highlightEnabled;
+ }
+
+ public void clearHighlight() {
+ defaultHighlighter.removeAllHighlights();
+ }
+
+ @Override
+ public int search(String searchString) {
+ highlight(searchString);
+ return search(searchString, -1);
+ }
+
+ @Override
+ public int search(String searchString, int columnIndex) {
+ return search(searchString, columnIndex, false);
+ }
+
+ @Override
+ public int search(String searchString, int columnIndex, boolean backward) {
+ Pattern pattern = createPattern(searchString);
+ return search(pattern, columnIndex, backward);
+ }
+
+ /**
+ * checks if the searchString should be interpreted as empty. here: returns true if string is null or has zero length.
+ *
+ * TODO: This should be in a utility class.
+ *
+ * @param searchString
+ * @return true if string is null or has zero length
+ */
+ protected boolean isEmpty(String searchString) {
+ return (searchString == null) || searchString.length() == 0;
+ }
+
+ @Override
+ public int search(Pattern pattern) {
+ return search(pattern, -1);
+ }
+
+ @Override
+ public int search(Pattern pattern, int startIndex) {
+ return search(pattern, startIndex, false);
+ }
+ int lastFoundIndex = -1;
+ MatchResult lastMatchResult;
+ String lastRegEx;
+
+ /**
+ * @return start position of matching string or -1
+ */
+ @Override
+ public int search(Pattern pattern, final int startIndex,
+ boolean backwards) {
+ highlight(pattern);
+ if ((pattern == null)
+ || (getDocument().getLength() == 0)
+ || ((startIndex > -1) && (getDocument().getLength() < startIndex))) {
+ updateStateAfterNotFound();
+ return -1;
+ }
+
+ int start = startIndex;
+ if (maybeExtendedMatch(startIndex)) {
+ if (foundExtendedMatch(pattern, start)) {
+ return lastFoundIndex;
+ }
+ start++;
+ }
+
+ int length;
+ if (backwards) {
+ start = 0;
+ if (startIndex < 0) {
+ length = getDocument().getLength() - 1;
+ } else {
+ length = -1 + startIndex;
+ }
+ } else {
+ // start = startIndex + 1;
+ if (start < 0) {
+ start = 0;
+ }
+ length = getDocument().getLength() - start;
+ }
+ Segment segment = new Segment();
+
+ try {
+ getDocument().getText(start, length, segment);
+ } catch (BadLocationException ex) {
+ Logger.getLogger(EditorSearchable.class.getName()).log(Level.FINE,
+ "this should not happen (calculated the valid start/length) ", ex);
+ }
+
+ Matcher matcher = pattern.matcher(segment.toString());
+ MatchResult currentResult = getMatchResult(matcher, !backwards);
+ if (currentResult != null) {
+ updateStateAfterFound(currentResult, start);
+ } else {
+ updateStateAfterNotFound();
+ }
+ return lastFoundIndex;
+ }
+
+ public void highlight(String search) {
+ if (!highlightEnabled) {
+ return;
+ }
+ Pattern compile = createPattern(search);
+ highlight(compile);
+ }
+
+ private int highlight(Pattern pattern, final int startIndex) {
+ if ((pattern == null)
+ || (getDocument().getLength() == 0)
+ || ((startIndex > -1) && (getDocument().getLength() < startIndex))) {
+ updateStateAfterNotFound();
+ return -1;
+ }
+
+ int start = startIndex;
+ // start = startIndex + 1;
+ if (start < 0) {
+ start = 0;
+ }
+ int length = getDocument().getLength() - start;
+ Segment segment = new Segment();
+
+ try {
+ getDocument().getText(start, length, segment);
+ } catch (BadLocationException ex) {
+ Logger.getLogger(EditorSearchable.class.getName()).log(Level.FINE,
+ "this should not happen (calculated the valid start/length) ", ex);
+ }
+
+ Matcher matcher = pattern.matcher(segment.toString());
+ MatchResult currentResult = getMatchResult(matcher, true);
+ if (currentResult != null) {
+ int end = currentResult.end() + start;
+ int found = currentResult.start() + start;
+ try {
+ defaultHighlighter.addHighlight(found, end, defaultHighlightPainter);
+ } catch (BadLocationException ex) {
+ Exceptions.printStackTrace(ex);
+ }
+ return found;
+ }
+ return -1;
+
+ }
+
+ /**
+ * Search from same startIndex as the previous search. Checks if the match is different from the last (either extended/reduced) at the same
+ * position. Returns true if the current match result represents a different match than the last, false if no match or the same.
+ *
+ * @param pattern
+ * @param start
+ * @return true if the current match result represents a different match than the last, false if no match or the same.
+ */
+ private boolean foundExtendedMatch(Pattern pattern, int start) {
+ // JW: logic still needs cleanup...
+ if (pattern.pattern().equals(lastRegEx)) {
+ return false;
+ }
+ int length = getDocument().getLength() - start;
+ Segment segment = new Segment();
+
+ try {
+ getDocument().getText(start, length, segment);
+ } catch (BadLocationException ex) {
+ Logger.getLogger(EditorSearchable.class.getName()).log(Level.FINE, "this should not happen (calculated the valid start/length) ", ex);
+ }
+ Matcher matcher = pattern.matcher(segment.toString());
+ MatchResult currentResult = getMatchResult(matcher, true);
+ if (currentResult != null) {
+ // JW: how to compare match results reliably?
+ // the group().equals probably isn't the best idea...
+ // better check pattern?
+ if ((currentResult.start() == 0)
+ && (!lastMatchResult.group().equals(currentResult.group()))) {
+ updateStateAfterFound(currentResult, start);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Checks if the startIndex is a candidate for trying a re-match.
+ *
+ *
+ * @param startIndex
+ * @return true if the startIndex should be re-matched, false if not.
+ */
+ private boolean maybeExtendedMatch(final int startIndex) {
+ return (startIndex >= 0) && (startIndex == lastFoundIndex);
+ }
+
+ /**
+ * @param currentResult
+ * @param offset
+ * @return the start position of the selected text
+ */
+ private int updateStateAfterFound(MatchResult currentResult, final int offset) {
+ int end = currentResult.end() + offset;
+ int found = currentResult.start() + offset;
+ editor.select(found, end);
+ editor.getCaret().setSelectionVisible(true);
+ lastFoundIndex = found;
+ lastMatchResult = currentResult;
+ lastRegEx = ((Matcher) lastMatchResult).pattern().pattern();
+ return found;
+ }
+
+ /**
+ * @param matcher
+ * @param useFirst whether or not to return after the first match is found.
+ * @return <code>MatchResult</code> or null
+ */
+ private MatchResult getMatchResult(Matcher matcher, boolean useFirst) {
+ MatchResult currentResult = null;
+ while (matcher.find()) {
+ currentResult = matcher.toMatchResult();
+ if (useFirst) {
+ break;
+ }
+ }
+ return currentResult;
+ }
+
+ /**
+ */
+ private void updateStateAfterNotFound() {
+ lastFoundIndex = -1;
+ lastMatchResult = null;
+ lastRegEx = null;
+ editor.setCaretPosition(editor.getSelectionEnd());
+ }
+
+ private Document getDocument() {
+ return editor.getDocument();
+ }
+
+ protected Pattern createPattern(String searchString) {
+ Pattern pattern = null;
+ if (!isEmpty(searchString)) {
+ pattern = Pattern.compile(searchString, 0);
+ }
+ return pattern;
+ }
+
+ protected void highlight(Pattern compile) {
+ if (!highlightEnabled) {
+ return;
+ }
+ clearHighlight();
+ int idx = highlight(compile, -1);
+ while (idx > 0) {
+ idx = highlight(compile, idx + 1);
+ }
+ }
+}
Modified: trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/SysdocTopComponent.java
===================================================================
--- trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/SysdocTopComponent.java 2013-07-16 21:14:06 UTC (rev 8444)
+++ trunk/soft/fudaa-crue/ui-sysdoc/src/main/java/org/fudaa/fudaa/crue/sysdoc/SysdocTopComponent.java 2013-07-17 00:33:38 UTC (rev 8445)
@@ -2,15 +2,21 @@
import com.jidesoft.swing.JideSplitPane;
import com.jidesoft.swing.JideTabbedPane;
+import com.jidesoft.swing.JideToggleButton;
import com.memoire.bu.BuBorders;
import com.memoire.bu.BuGridLayout;
import com.memoire.bu.BuResource;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Desktop;
+import java.awt.EventQueue;
import java.awt.FlowLayout;
+import java.awt.KeyboardFocusManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
@@ -22,15 +28,19 @@
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.swing.AbstractAction;
import javax.swing.ActionMap;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
+import javax.swing.InputMap;
import javax.swing.JButton;
import javax.swing.JComponent;
+import javax.swing.JEditorPane;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
+import javax.swing.KeyStroke;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
@@ -97,11 +107,16 @@
private HtmlBrowser browser;
private JTextField txtUrl;
private JideTabbedPane tabbedPane;
- JTextField tf;
- JList listResultat;
+ private JideSplitPane splitPane;
+ private JideToggleButton btHighlight;
+ private CustomFindBar findBar;
+ private JTextField tf;
+ private JList listResultat;
+ protected EditorSearchable editorSearchable;
public SysdocTopComponent() {
initComponents();
+
setName(NbBundle.getMessage(SysdocTopComponent.class, "CTL_SysdocTopComponent"));
setToolTipText(NbBundle.getMessage(SysdocTopComponent.class, "HINT_SysdocTopComponent"));
browser = new HtmlBrowser();
@@ -120,13 +135,29 @@
txtUrl.setEditable(false);
treeView = new BeanTreeView();
treeView.setRootVisible(true);
- JideSplitPane splitPane = new JideSplitPane();
+ splitPane = new JideSplitPane();
tabbedPane = new JideTabbedPane();
tabbedPane.add(treeView);
- tabbedPane.addTab(StringUtils.EMPTY, BuResource.BU.getIcon("crystal_arbre"), treeView, NbBundle.getMessage(SysdocTopComponent.class, "Sysdoc.TocTooltip"));
- tabbedPane.addTab(StringUtils.EMPTY, ImageUtilities.loadImageIcon("org/fudaa/fudaa/crue/sysdoc/icons/rechercher.png", false), createSearchPanel(), NbBundle.getMessage(SysdocTopComponent.class, "Sysdoc.SearchTooltip"));
+ tabbedPane.addTab(StringUtils.EMPTY, BuResource.BU.getIcon("crystal_arbre"), treeView, NbBundle.getMessage(SysdocTopComponent.class,
+ "Sysdoc.TocTooltip"));
+ tabbedPane.addTab(StringUtils.EMPTY, ImageUtilities.loadImageIcon("org/fudaa/fudaa/crue/sysdoc/icons/rechercher.png", false), createSearchPanel(),
+ NbBundle.getMessage(SysdocTopComponent.class, "Sysdoc.SearchTooltip"));
splitPane.add(tabbedPane);
- splitPane.add(browser);
+ JPanel pnBrowser = new JPanel(new BorderLayout());
+ pnBrowser.add(browser);
+ findBar = createFindComponent();
+ btHighlight = new JideToggleButton(NbBundle.getMessage(SysdocTopComponent.class, "highlight.All"));
+ btHighlight.addItemListener(new ItemListener() {
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ highlightStateChanged();
+ }
+ });
+ JPanel findBarPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
+ findBarPanel.add(findBar);
+ findBarPanel.add(btHighlight);
+ pnBrowser.add(findBarPanel, BorderLayout.SOUTH);
+ splitPane.add(pnBrowser);
splitPane.setShowGripper(true);
add(splitPane);
treeView.setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
@@ -145,6 +176,7 @@
SysdocAdminUI adminUi = new SysdocAdminUI();
adminUi.decore(this);
}
+ updateSize();
}
@Override
@@ -152,6 +184,16 @@
return null;
}
+ protected void highlightStateChanged() {
+ if (btHighlight.isSelected() != this.editorSearchable.isHighlightEnabled()) {
+ editorSearchable.setHighlightEnabled(btHighlight.isSelected());
+ if (StringUtils.isNotBlank(findBar.getText())) {
+ editorSearchable.highlight(findBar.getPattern());
+ }
+ }
+ }
+ private boolean fromSearchPanel;
+
private JPanel createSearchPanel() {
JPanel pnSearch = new JPanel(new BorderLayout());
tf = new JTextField(10);
@@ -181,7 +223,9 @@
SearchResultat resultat = (SearchResultat) listResultat.getSelectedValue();
if (resultat != null) {
try {
+ fromSearchPanel = true;
em.setSelectedNodes(new Node[]{resultat.getNode()});
+
} catch (PropertyVetoException ex) {
Exceptions.printStackTrace(ex);
}
@@ -240,9 +284,25 @@
return sysdocLocaleDir;
}
+ public void documentLoaded() {
+ EventQueue.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+
+ if (fromSearchPanel) {
+ fromSearchPanel = false;
+ findBar.setText(tf.getText());
+ btHighlight.setSelected(true);
+ }
+ if (btHighlight.isSelected()) {
+ editorSearchable.highlight(findBar.getPattern());
+ }
+ }
+ });
+ }
+
protected void urlChanged() {
if (sysdocLocaleDir != null && nodeByPath != null && !isUpdating) {
-
try {
String location = URLDecoder.decode(browser.getBrowserImpl().getLocation(), "UTF-8");
String base = sysdocLocaleDir.toURI().toURL().toString();
@@ -321,14 +381,37 @@
void writeProperties(java.util.Properties p) {
// better to version settings since initial version as advocated at
// http://wiki.apidesign.org/wiki/PropertyFiles
-// p.setProperty("version", "1.0");
- // TODO store your settings
+ if (splitPane != null) {
+ p.setProperty("version", "1.0");
+ p.setProperty("splitPane.position", Integer.toString(splitPane.getDividerLocation(0)));
+ }
}
+ private int initPosition = -1;
void readProperties(java.util.Properties p) {
- // TODO read your settings according to their version
+ String position = (String) p.get("splitPane.position");
+ initPosition = -1;
+ if (StringUtils.isNotBlank(position)) {
+ try {
+ initPosition = Integer.parseInt(position);
+
+ } catch (NumberFormatException numberFormatException) {
+ }
+ updateSize();
+ }
}
+ private void updateSize() {
+ if (initPosition > 0 && splitPane != null) {
+ EventQueue.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ splitPane.setDividerLocation(0, initPosition);
+ }
+ });
+ }
+ }
+
@Override
public void componentClosedTemporarily() {
browser.getBrowserImpl().stopLoading();
@@ -420,7 +503,8 @@
}
File target = new File(sysdocLocaleDir, lookup.getPath());
if (!target.exists() && !lookup.isFolder()) {
- DialogHelper.showError(getDisplayName(), org.openide.util.NbBundle.getMessage(SysdocTopComponent.class, "FileNotFoundError", target.getAbsolutePath()));
+ DialogHelper.showError(getDisplayName(), org.openide.util.NbBundle.getMessage(SysdocTopComponent.class, "FileNotFoundError", target.
+ getAbsolutePath()));
}
if (target.exists()) {
try {
@@ -506,4 +590,30 @@
button.setContentAreaFilled(false);
button.setBorder(BuBorders.EMPTY0000);
}
+
+ protected final CustomFindBar createFindComponent() {
+ Component browserComponent = ((JScrollPane) browser.getBrowserComponent()).getViewport().getView();
+ final JEditorPane editor = (JEditorPane) browserComponent;
+ editor.addPropertyChangeListener("page", new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ documentLoaded();
+ }
+ });
+ editorSearchable = new EditorSearchable(editor);
+ final CustomFindBar newFindBar = new CustomFindBar(editorSearchable);
+ ActionMap actionMap = newFindBar.getActionMap();
+ final String findCommand = "find";
+ actionMap.put(findCommand, new AbstractAction() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ KeyboardFocusManager.getCurrentKeyboardFocusManager()
+ .focusNextComponent(newFindBar);
+ }
+ });
+ InputMap inputContext = newFindBar.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+ inputContext.put(KeyStroke.getKeyStroke("ctrl F"), findCommand);
+ inputContext.put(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0), findCommand);
+ return newFindBar;
+ }
}
Modified: trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/Bundle.properties
===================================================================
--- trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/Bundle.properties 2013-07-16 21:14:06 UTC (rev 8444)
+++ trunk/soft/fudaa-crue/ui-sysdoc/src/main/resources/org/fudaa/fudaa/crue/sysdoc/Bundle.properties 2013-07-17 00:33:38 UTC (rev 8445)
@@ -17,3 +17,4 @@
SearchResultat.Accuracy=Pertinence: {0} %
HomeButton.Tooltip=Aller \u00e0 la page d'accueil
PrintButton.Tooltip=Afficher la page dans le navigateur syst\u00e8me
+highlight.All=Tout surligner
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|