/*******************************************************************************
* Copyright (c) 2007-2011, G. Weirich and Elexis
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* G. Weirich - initial implementation
*******************************************************************************/
package ch.elexis.base.ch.medikamente.bag.views;
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.ui.menus.ExtensionContributionFactory;
import org.eclipse.ui.menus.IContributionRoot;
import org.eclipse.ui.services.IServiceLocator;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
import ch.elexis.core.ui.icons.Images;
import ch.elexis.core.ui.util.SWTHelper;
import ch.elexis.core.ui.views.KompendiumView;
import ch.rgw.tools.ExHandler;
public class AddMenuToKompendium extends ExtensionContributionFactory {
public AddMenuToKompendium(){
// TODO Auto-generated constructor stub
}
@Override
public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions){
Action action = new Action("Pull") {
{
setImageDescriptor(Images.IMG_IMPORT.getImageDescriptor());
setToolTipText("Text zu Medikament übernehmen");
}
@Override
public void run(){
String text = KompendiumView.getText();
SAXBuilder builder = new SAXBuilder();
try {
Pattern pattern = Pattern.compile(".+<body.*?>(.+)</body>.*", Pattern.DOTALL);
Matcher m = pattern.matcher(text);
if (m.matches()) {
String cont = m.group(1);
Document doc = builder.build(new StringReader(cont));
Element eRoot = doc.getRootElement();
XPath xpath = XPath.newInstance("//h2");
List<Element> res = xpath.selectNodes(eRoot);
for (Element e : res) {
System.out.println(e.getText());
}
} else {
SWTHelper
.showError("Parse Fehler",
"Der Text konnte nicht korrekt gelesen oder interpretiert werden. Versuchen Sie es noch einmal.");
}
} catch (JDOMException e) {
ExHandler.handle(e);
SWTHelper
.showError(
"XML Fehler",
"Der Text konnte nicht korrekt gelesen oder interpretiert werden. Versuchen Sie es noch einmal. Fehlermeldung: "
+ e.getMessage());
} catch (IOException e) {
ExHandler.handle(e);
SWTHelper.showError("IO Fehler", "Fehler beim Lesen " + e.getMessage());
}
System.out.println(text);
}
};
additions.addContributionItem(new ActionContributionItem(action), null);
}
}