Code Monkey home page Code Monkey logo

csvedit's Introduction

CsvEdit

CSV Editor plugin for Eclipse

Status

Feel free to clone, edit, build and release (just update version and/or name of your fork, so make it clear for users) or ask for push access here. Tell about new fork by adding new issue. I will happily put a link to the new repo.

What is this ?

This repository is a fork of https://code.google.com/p/csvedit/ created by Mathieu Savy in 2104. It contains the latest functionalities available for CSVEdit but most of the new features are still being tested. If you look for a more reliable version of the plugin you should probably visit the original repository.

  • The previous stable release 1.1.3 was available on Eclipse Marketplace.
  • The version available in this repository is 1.2.x

The intention was to contribute features from here to the original repository once they are mature.

How to get the latest version

HELP WANTED WITH PUBLISHING 1.2+ build

  1. NOT AVAILABLE Via Eclipse marketplace at https://marketplace.eclipse.org/content/csv-edit-resurrector
    or drag-n-drop the image on the Eclipse toolbar
    Drag onto your running Eclipse toolbar. *Requires Eclipse Marketplace Client

  2. NOT AVAILABLE The latest version (1.2) 2017-10-31 built is NO LONGER available with update-site http://www.nodeclipse.org/updates/csvedit/. In Eclipse Help -> Install new software, add the URL and follow the instructions.

  3. Or from this repository: https://raw.githubusercontent.com/SegFaultError/CsvEdit/master/csvedit.update/site.xml

  • [] TODO 3. Offline site archive from GitHub releases.
  1. Other option is to build from sources with maven mvn package and install from local repository archive, that will be in csvedit.site/target/repository.

CSVEdit

CSVEdit make CSVFile edition easier.

  • Edit from the source editor

    The source editor has been enhanced to help you differentiate your data from the different column using a color mechanism

  • Edit from a table view representing the csv data

    The table editing is definitely the added value of the plugin and allows a bunch of operation on your csv file among the following features

    • Easy editing of data
    • Insertion and deletion of table rows
    • Insertion and deletion of table column
    • Filtering of data
    • Customize view with hidding/display of column to simplify the view
    • Manage your column with moving/resizing columns
    • Sorting data in column
    • Manage your own CSV settings

History

Optional maven/tycho build was added in 2017 by Paul Verest.

New features of 1.2.x

In the new CSVEdit version, it is now possible to edit a row in a form.

Detailed edition

And even specify columns containing multiple values and their delimiter.

To do so, go in preferences/CSV Editor Preferences:

  • in header regex put a regex matching a part of all column headers you want to display as a table. For instance, the picture below uses the regex (customer|order_id).
  • in delimiter to use as value delimiter, put the delimiter separating each value in your cell.

List with multivalues

Code overview

with-Eclipse logo

csvedit's People

Contributors

mathieuu avatar paulvi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

csvedit's Issues

Fields display unformatted line (IllegalArgumentException, ClassCastException)

Description

Using default settings of CsvEdit and the following content of monsters.csv:

name,hp,offense,defense,accuracy,evade,
Slime,2,1,1,1,1,

The individual fields (after the first) are each rendered with the entire line Slime,2,1,1,1,1, instead of only the value for the field.

Screenshot

See for demonstration of error behavior:
csv_edit_error_screenshot

Environment

Eclipse IDE for C/C++ Developers (includes Incubating components)
Version: 2020-09 (4.17.0)
Build id: 20200910-1200
jdk:

org.eclipse.justj.openjdk.hotspot.jre.full.macosx.x86_64_14.0.2.v20200815-0932

os: macOS 10.15.5

Stacktrace

In the workspace log file .metadata/.log there are exceptions for csvedit:

!ENTRY org.eclipse.ui 4 0 2020-12-23 16:49:16.781
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.IllegalArgumentException: Index out of bounds
	at org.eclipse.swt.SWT.error(SWT.java:4850)
	at org.eclipse.swt.SWT.error(SWT.java:4784)
	at org.eclipse.swt.SWT.error(SWT.java:4755)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:810)
	at org.eclipse.swt.widgets.Menu.createItem(Menu.java:352)
	at org.eclipse.swt.widgets.MenuItem.<init>(MenuItem.java:128)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor.addMenuItemToColumn(MultiPageCSVEditor.java:651)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor.access$4(MultiPageCSVEditor.java:648)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor$10.handleEvent(MultiPageCSVEditor.java:586)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4385)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1512)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1535)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1520)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1324)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3789)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:153)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

!ENTRY org.eclipse.ui 4 0 2020-12-23 16:49:16.828
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.ClassCastException: class org.eclipse.jface.viewers.WrappedViewerLabelProvider cannot be cast to class org.fhsolution.eclipse.plugins.csvedit.providers.CSVLabelProvider (org.eclipse.jface.viewers.WrappedViewerLabelProvider is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @2596d7f4; org.fhsolution.eclipse.plugins.csvedit.providers.CSVLabelProvider is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @466d16ca)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor$6.keyReleased(MultiPageCSVEditor.java:312)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:178)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4385)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1512)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1535)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1520)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1549)
	at org.eclipse.swt.widgets.Text.sendKeyEvent(Text.java:1784)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1545)
	at org.eclipse.swt.widgets.Text.sendKeyEvent(Text.java:1749)
	at org.eclipse.swt.widgets.Control.keyUp(Control.java:2480)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:6020)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:235)
	at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2150)
	at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2401)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:6136)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:5386)
	at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5522)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
	at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:117)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3786)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:153)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

Plugin causes regular "SWT Resource was not properly disposed" errors in the log

Using Eclipse 2021-06 with this plugin, I frequently get the following error in the log (which references MultiPageCSVEditor):

!ENTRY org.eclipse.ui.ide 4 4 2021-07-09 17:54:50.641
!MESSAGE Not properly disposed SWT resource
!STACK 0
java.lang.Error: SWT Resource was not properly disposed
	at org.eclipse.swt.graphics.Resource.initNonDisposeTracking(Resource.java:172)
	at org.eclipse.swt.graphics.Resource.<init>(Resource.java:120)
	at org.eclipse.swt.graphics.TextLayout.<init>(TextLayout.java:176)
	at org.eclipse.jface.viewers.StyledCellLabelProvider.getSharedTextLayout(StyledCellLabelProvider.java:207)
	at org.eclipse.jface.viewers.StyledCellLabelProvider.measure(StyledCellLabelProvider.java:276)
	at org.eclipse.jface.viewers.OwnerDrawLabelProvider$OwnerDrawListener.handleEvent(OwnerDrawLabelProvider.java:59)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4209)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1043)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1067)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
	at org.eclipse.swt.widgets.Table.sendMeasureItemEvent(Table.java:3648)
	at org.eclipse.swt.widgets.Table.CDDS_SUBITEMPREPAINT(Table.java:995)
	at org.eclipse.swt.widgets.Table.wmNotifyChild(Table.java:6735)
	at org.eclipse.swt.widgets.Control.wmNotify(Control.java:5814)
	at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1954)
	at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:5382)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4816)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4938)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:588)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:454)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4861)
	at org.eclipse.swt.widgets.Table.windowProc(Table.java:5813)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4930)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:588)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:454)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4861)
	at org.eclipse.swt.widgets.Table.windowProc(Table.java:5813)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4938)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(Native Method)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:588)
	at org.eclipse.swt.widgets.Table.callWindowProc(Table.java:454)
	at org.eclipse.swt.widgets.Table.WM_SETREDRAW(Table.java:6210)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4835)
	at org.eclipse.swt.widgets.Table.windowProc(Table.java:5813)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4930)
	at org.eclipse.swt.internal.win32.OS.SendMessage(Native Method)
	at org.eclipse.swt.widgets.Table.setRedraw(Table.java:4737)
	at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:574)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:282)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1634)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor.updateTableFromTextEditor(MultiPageCSVEditor.java:595)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor.access$1(MultiPageCSVEditor.java:480)
	at org.fhsolution.eclipse.plugins.csvedit.editors.MultiPageCSVEditor$7.run(MultiPageCSVEditor.java:456)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4001)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3629)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1157)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:654)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1462)

I could not pinpoint it to any specific action I perform with the CSV editor, though. I also did not check if this also occurs in older Eclipse versions or whether it's a new regression that only affects current versions.

Allow tabs to be seperators

Currently there is only one character allowed to seperate columns. Unfortunatly you can't use \t to use a tabulator as a seperator

still maintained?

Is this still being maintained? The update site does not seem to be available.

Google Code is no longer available

The update site on Google Code is broken; installation via Eclipse Market Place doesn't work anymore and the links on the project page also don't work anymore.

Please disable any unstable features and create a stable 1.2 release.

Sorting by column does not seem to work

We are using Eclipse 2021-06. No matter what column I sort by, the rows don't seem to follow any logical order (neither lexicographic nor numeric).

This, for example, is not sorted (but still different from when I turn off sorting entirely for that column):
NotSorted

Looking at the code with current dependencies, the ViewerSorter that CSVTableSorter extends is marked as deprecated. The method TableViewer.setSorter() is deprecated as well. So perhaps the table API has changed and is not using the current sorter implementation anymore. According to the documentation the replacement is setComparator(ViewerComparator).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.