Rich text editor for JSF 2 - java

I searched around for a basic WYSIWYG rich text editor that I can use in a JSF 2 (VDL) application, but found nothing satisfactory.. in the sense that:
The editor is very extensive, and not configurable (like PrimeFaces)
The editor doesn't work with VDL (like RichFaces)
Multiple instances of the editor cannot be used on the same page (like Tomahawk t:htmlArea)
I actually don't need all the fancy things like Fonts, Indenting/justification, undo/redo... just Bold, Italic, Lists and Hyperlinks would suffice.
Do you know of something that works well in this scenario, as well as gives out XHTML compliant markup, and works well with partial page refreshes(f:ajax), or would you recommend that I write my own?
Thank you!
Pradyumna

Just use TinyMCE. As far as JSF is concerned, the input can just be treated like a textarea. It gets rendered on the client, and gets a postback of text with the form submission; what you do with it in while in the browser doesn't matter to JSF.

You might want to try out IceFaces and this richtext editor

Related

Drag and Drop through html table and Swing?

Is it possible to drag and drop some table from a web page and get the same table structure on a JTable?
You'll want to implement a DropTargetListener on the swing component you want to drag the HTML into. Then get the HTML from the drag using a text/html DataFlavor, and parse the HTML, converting it into a TableModel. Set this TableModel on your JTable.
I rode it is possible to Drag n Drop from desktop to browser, but not the other way around.
So, i don't know the answer to your question, but i would mention a little idea came to mind, maybe you find interesting:
Not directly dragging the table to the swing app. Instead drag that table from the browser, to some textArea or image on the page. It could then automatically transform the tabellar data to XML start some stream that sends that data to your swing application(Maybe some webservice could do pass it to the desktop app).
I don't know if that can help you giving you some tips, other thing comes to my mind is the dropbox API for java, check it out, maybe you have some interesting features that can help you.

JSF List of Values Options

I am using JSF 1.1 and I'm looking for a JSF list of values component.
I have a button and when I click that a popup window should open with one text field and buttons, where either I could search for what I am looking for in the text field or select all the values when I click on the buttons and from the available list of values I should be able to select one item.
Is any such type of component available in JSF 1.1 or with the icefaces, richfaces or apache jsf components?
Your question title is a little bit confusing, as you don't seem to ask for just a "list of values"-component, but a bunch of different components. Your situation is too specific to have a single existing component covering it all, but you can rather easily achieve the effect by combining a number of components.
Anyway, RichFaces has a modalPanel that you can use for the popup. Text fields and buttons are in the standard Faces library and the 'available list of values` can be handled by a selectOneMenu component, which is also in the standard library.
One additional hint, if it's in anyway possible try not to use JSF 1.1. This is an extremely old version where the list of problems is nearly endless. If you are somehow stuck on a very servlet container you should at least use JSF 1.2, but much better is to use the latest 2.1 release.

JSF 2.0 Dynamic Views

I'm working on a web project which uses JSF 2.0, PrimeFaces and PrettyFaces as main frameworks / libraries. The pages have the following (common) structure: Header, Content, Footer.
Header:
The Header always contains the same menu. This menu is a custom component, which generates a recursive html <ul><li> list containing <a href="url"> html links, this is all rendered with a custom renderer. The link looks like 'domain.com/website/datatable.xhtml?ref=2'. Where the ref=2 used to load the correct content from the database. I use prettyfaces to store this request value in a backingbean.
Question 1: Is it ok to render the <a href> links myself, or should I better add an HTMLCommandLink from my UIComponent and render that in the encodeBegin/End?
Question 2: I think passing variables like this is not really the JSF 2.0 style, how to do this in a better way?
Content:
The content contains dynamic data. It can be a (primefaces) datatable, build with dynamic data from the database. It can also be a text page, also loaded from the database. Or a series of graphs. You got the point, it's dynamic. The content is based on the link pressed in the header menu. If the content is of type datatable, then I put the ref=2 variable to a DataTableBean (via prettyfaces), which then loads the correct datatable from the database. If the content is of type chart, I'll put it on the ChartBean.
Question 3: Is this a normal setup? Ideally I would like to update my content via Ajax.
I hope it's clear :)
It's ok to just output link yourself, commandLink is out of the question (it does a postback using javascript, it's not what you want);
Parameter are all in the param implicit object. You can insert them by a #ManagedProperty annotation, like this:
#ManagedProperty("#{param.ref}")
String ref
// .. getters, setters (obligatory!)
You can also use (if you are on JSF 2) the f:viewParam tag (a nice description http://blogs.oracle.com/rlubke/entry/jsf_2_0_bookmarability_view), you get the bonus of validation and conversion.
The way I understand it, your setup is rather complicated. Using a handwritten custom component for a menu is a huge overkill (at least judging from the provided description), a composite component would probably do. JSF has no special way of making ajax calls between views or embedding views one into another, so - unless you use iframes - your only choice would be to include all the possible pieces of content into a single view, wrapped in panels, and render them as required:
<h:panelGroup rendered='#{backingBean.ref == 2}'>
... content 2 ...
</h:panelGroup>
and so on. Careful, this would be heavy on resources.
You could also write your own ajax solution in javascript. This would require all the pieces of content to be fully independent views, with their own forms. Also, all their postbacks would have to go through ajax, so the main page does not get reloaded.

Looking for a way to highlight specific words in textareas?

Hi i'm looking for a way to highlight specific words in text kind of like how a text editor might work with syntax highlighting. The highlighting will consist of the text being different colours and/or different styles such as italic, bold or regular.
In order to narrow focus, how this might be achieved using Java Swing components.
There are most probably a number of ways of doing this but one that is efficient in dealing with multiple highlighted words and large amounts of text.
Any feedback is appreciated. Thanks.
You can use the Highlighter that is available through JTextComponent's setHighlighter().
Have a look at Java's JEditorPane class: it does what you want.
I would use a JTextPane. Its easier to use than a JEditorPane as you don't have to know or worry about HTML. The link you where given to the Swing tutorial covers both components.
You probably need something like RSyntaxTextArea. I personally like it because:
- it's easy extendable
- it comes with really useful plugins
- opensource & free & maintained
- it supports bunch of languages like: C, Java, Ruby, Php, HTML, CSS, Sql and so on.

View GWT HTML source?

Is there a way to VIEW the HTML source code that GWT produces? Currently I just give my flex table the DIV id and that DIV is all HTML I can see in ViewSource.
Is there a way to structure my table in HTML (say using div's and lists) and than create a something like FlexTable around that?
To answer the original question, you can view the HTML GWT has rendered via 'Inspect Element' in Firefox, with Firebug is installed. Alternatively the Web Inspector in Safari/Chrome will do the trick, as will the Developer tools in both IE8 and Opera.
Well well it seems the answer is in the documentation.
In particular Organizing Projects outlines how we can bind different widgets to different id's on the page.
So I can effectively do something like:
# html
<div id="id_table"></div>
<div id="id_next_button"></div>
# java
t = new FlexTable()
RootPanel.get("id_table").add(t);
nextbtn = new Button("next");
RootPanel.get("id_next_button").add(nextbtn);
Wohoo!
Regarding the second part of your quetion. It is possible to create a HTML component in GWT. The recomended way to do this is extending ComplexPanel and create the elements using Document.get().createXXXElement(). But it is a little laborius.
Check out this dicussion and I am sure there are other articles about this around the internet. You can also study the code of other components the extend ComplexPanel.

Categories