Skip to content
This repository was archived by the owner on Apr 26, 2019. It is now read-only.

add originName option #118

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions src/com/avast/android/butterknifezelezny/InjectAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.avast.android.butterknifezelezny.form.EntryList;
import com.avast.android.butterknifezelezny.iface.ICancelListener;
import com.avast.android.butterknifezelezny.iface.IConfirmListener;
import com.avast.android.butterknifezelezny.iface.IRefreshListener;
import com.avast.android.butterknifezelezny.model.Element;
import com.intellij.codeInsight.CodeInsightActionHandler;
import com.intellij.codeInsight.generation.actions.BaseGenerateAction;
Expand All @@ -21,11 +22,13 @@
import javax.swing.*;
import java.util.ArrayList;

public class InjectAction extends BaseGenerateAction implements IConfirmListener, ICancelListener {
public class InjectAction extends BaseGenerateAction implements IConfirmListener, ICancelListener,IRefreshListener {

protected JFrame mDialog;
protected static final Logger log = Logger.getInstance(InjectAction.class);

Project mProject;
Editor mEditor;
boolean mIsOriginName=true;
@SuppressWarnings("unused")
public InjectAction() {
super(null);
Expand All @@ -52,10 +55,10 @@ public boolean isValidForFile(Project project, Editor editor, PsiFile file) {

@Override
public void actionPerformed(AnActionEvent event) {
Project project = event.getData(PlatformDataKeys.PROJECT);
Editor editor = event.getData(PlatformDataKeys.EDITOR);
mProject = event.getData(PlatformDataKeys.PROJECT);
mEditor = event.getData(PlatformDataKeys.EDITOR);

actionPerformedImpl(project, editor);
actionPerformedImpl(mProject, mEditor);
}

@Override
Expand All @@ -70,7 +73,7 @@ public void actionPerformedImpl(Project project, Editor editor) {

log.info("Layout file: " + layout.getVirtualFile());

ArrayList<Element> elements = Utils.getIDsFromLayout(layout);
ArrayList<Element> elements = Utils.getIDsFromLayout(layout,mIsOriginName);
if (!elements.isEmpty()) {
showDialog(project, editor, elements);
} else {
Expand Down Expand Up @@ -140,7 +143,7 @@ protected void showDialog(Project project, Editor editor, ArrayList<Element> ele
}
}

EntryList panel = new EntryList(project, editor, elements, ids, createHolder, this, this);
EntryList panel = new EntryList(project, editor, elements, ids, createHolder,mIsOriginName, this, this,this);

mDialog = new JFrame();
mDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Expand All @@ -159,4 +162,11 @@ protected void closeDialog() {
mDialog.setVisible(false);
mDialog.dispose();
}

@Override
public void onRefresh(boolean isOriginName) {
mIsOriginName = !isOriginName;
mDialog.dispose();
actionPerformedImpl(mProject,mEditor);
}
}
10 changes: 5 additions & 5 deletions src/com/avast/android/butterknifezelezny/common/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -148,10 +148,10 @@ public static PsiFile findLayoutResource(PsiFile file, Project project, String f
* @param file
* @return
*/
public static ArrayList<Element> getIDsFromLayout(final PsiFile file) {
public static ArrayList<Element> getIDsFromLayout(final PsiFile file,boolean isOriginName) {
final ArrayList<Element> elements = new ArrayList<Element>();

return getIDsFromLayout(file, elements);
return getIDsFromLayout(file, elements,isOriginName);
}

/**
Expand All @@ -160,7 +160,7 @@ public static ArrayList<Element> getIDsFromLayout(final PsiFile file) {
* @param file
* @return
*/
public static ArrayList<Element> getIDsFromLayout(final PsiFile file, final ArrayList<Element> elements) {
public static ArrayList<Element> getIDsFromLayout(final PsiFile file, final ArrayList<Element> elements, final boolean isOriginName) {
file.accept(new XmlRecursiveElementVisitor() {

@Override
Expand All @@ -178,7 +178,7 @@ public void visitElement(final PsiElement element) {
PsiFile include = findLayoutResource(file, project, getLayoutName(layout.getValue()));

if (include != null) {
getIDsFromLayout(include, elements);
getIDsFromLayout(include, elements,isOriginName);

return;
}
Expand All @@ -203,7 +203,7 @@ public void visitElement(final PsiElement element) {
}

try {
elements.add(new Element(name, value));
elements.add(new Element(name, value,isOriginName));
} catch (IllegalArgumentException e) {
// TODO log
}
Expand Down
39 changes: 38 additions & 1 deletion src/com/avast/android/butterknifezelezny/form/EntryList.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.avast.android.butterknifezelezny.iface.ICancelListener;
import com.avast.android.butterknifezelezny.iface.IConfirmListener;
import com.avast.android.butterknifezelezny.iface.IRefreshListener;
import com.avast.android.butterknifezelezny.iface.OnCheckBoxStateChangedListener;
import com.avast.android.butterknifezelezny.model.Element;
import com.intellij.openapi.editor.Editor;
Expand All @@ -23,14 +24,18 @@ public class EntryList extends JPanel {
protected ArrayList<String> mGeneratedIDs = new ArrayList<String>();
protected ArrayList<Entry> mEntries = new ArrayList<Entry>();
protected boolean mCreateHolder = false;
protected boolean mOriginalName = true;
protected String mPrefix = null;
protected IConfirmListener mConfirmListener;
protected ICancelListener mCancelListener;
protected IRefreshListener mRefreshListener;
protected JCheckBox mPrefixCheck;
protected JTextField mPrefixValue;
protected JLabel mPrefixLabel;
protected JCheckBox mHolderCheck;
protected JCheckBox mHolderCheck2;
protected JLabel mHolderLabel;
protected JLabel mHolderLabel2;
protected JButton mConfirm;
protected JButton mCancel;
protected EntryHeader mEntryHeader;
Expand Down Expand Up @@ -60,12 +65,14 @@ public void changeState(boolean checked) {
}
};

public EntryList(Project project, Editor editor, ArrayList<Element> elements, ArrayList<String> ids, boolean createHolder, IConfirmListener confirmListener, ICancelListener cancelListener) {
public EntryList(Project project, Editor editor, ArrayList<Element> elements, ArrayList<String> ids, boolean createHolder, boolean originalName, IConfirmListener confirmListener, ICancelListener cancelListener, IRefreshListener refreshListener) {
mProject = project;
mEditor = editor;
mCreateHolder = createHolder;
mOriginalName = originalName;
mConfirmListener = confirmListener;
mCancelListener = cancelListener;
mRefreshListener = refreshListener;
if (elements != null) {
mElements.addAll(elements);
}
Expand Down Expand Up @@ -147,9 +154,11 @@ protected void addButtons() {
mHolderCheck.setSelected(mCreateHolder);
mHolderCheck.addChangeListener(new CheckHolderListener());


mHolderLabel = new JLabel();
mHolderLabel.setText("Create ViewHolder");


JPanel holderPanel = new JPanel();
holderPanel.setLayout(new BoxLayout(holderPanel, BoxLayout.LINE_AXIS));
holderPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
Expand All @@ -158,6 +167,26 @@ protected void addButtons() {
holderPanel.add(Box.createHorizontalGlue());
add(holderPanel, BorderLayout.PAGE_END);


mHolderCheck2 = new JCheckBox();
mHolderCheck2.setPreferredSize(new Dimension(32, 26));
mHolderCheck2.setSelected(mOriginalName);
mHolderCheck2.addChangeListener(new CheckOriginListener());


mHolderLabel2 = new JLabel();
mHolderLabel2.setText("Original Name");


JPanel holderPanel2 = new JPanel();
holderPanel2.setLayout(new BoxLayout(holderPanel2, BoxLayout.LINE_AXIS));
holderPanel2.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
holderPanel2.add(mHolderCheck2);
holderPanel2.add(mHolderLabel2);
holderPanel2.add(Box.createHorizontalGlue());
add(holderPanel2, BorderLayout.PAGE_END);


mCancel = new JButton();
mCancel.setAction(new CancelAction());
mCancel.setPreferredSize(new Dimension(120, 26));
Expand Down Expand Up @@ -214,6 +243,14 @@ public void stateChanged(ChangeEvent event) {
mCreateHolder = mHolderCheck.isSelected();
}
}
public class CheckOriginListener implements ChangeListener {

@Override
public void stateChanged(ChangeEvent event) {
mOriginalName = mHolderCheck2.isSelected();
mRefreshListener.onRefresh(mOriginalName);
}
}

public class CheckPrefixListener implements ChangeListener {

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.avast.android.butterknifezelezny.iface;

public interface IRefreshListener {

public void onRefresh(boolean isOriginName);
}
36 changes: 19 additions & 17 deletions src/com/avast/android/butterknifezelezny/model/Element.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class Element {
public boolean used = true;
public boolean isClick = true;

public Element(String name, String id) {
public Element(String name, String id, boolean isOriginName) {
// id
final Matcher matcher = sIdPattern.matcher(id);
if (matcher.find() && matcher.groupCount() > 0) {
Expand All @@ -39,8 +39,7 @@ public Element(String name, String id) {
this.nameFull = null;
this.name = name;
}

this.fieldName = getFieldName();
this.fieldName = getFieldName(isOriginName);
}

/**
Expand Down Expand Up @@ -69,22 +68,25 @@ public String getFullID() {
*
* @return
*/
private String getFieldName() {
String[] words = this.id.split("_");
StringBuilder sb = new StringBuilder();
sb.append(Utils.getPrefix());

for (int i = 0; i < words.length; i++) {
String[] idTokens = words[i].split("\\.");
char[] chars = idTokens[idTokens.length - 1].toCharArray();
if (i > 0 || !Utils.isEmptyString(Utils.getPrefix())) {
chars[0] = Character.toUpperCase(chars[0]);
private String getFieldName(boolean isOriginName) {
if (isOriginName) {
return this.id;
} else {
String[] words = this.id.split("_");
StringBuilder sb = new StringBuilder();
sb.append(Utils.getPrefix());

for (int i = 0; i < words.length; i++) {
String[] idTokens = words[i].split("\\.");
char[] chars = idTokens[idTokens.length - 1].toCharArray();
if (i > 0 || !Utils.isEmptyString(Utils.getPrefix())) {
chars[0] = Character.toUpperCase(chars[0]);
}

sb.append(chars);
}

sb.append(chars);
return sb.toString();
}

return sb.toString();
}

/**
Expand Down